版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章自定义数据类型
一、选择题
1-5BAABB
6-10ABCAC
11-15CDDBD
16-20BBCBB
二、填空题
1.structnode*link
2.finclude<stdio.h>structlist
{chardata;
structlist
3.p=(structaa*)malloc(sizeof(structaa>);
4.34
5.6
6.24
7.4,8
8.266
9.301,100,11
10.10,x
三、编程题
1.输入3个整数,按日小到大的顺序输出。
#include<stdio.h>
voidsort(int*a,int*b,int*c)
inttemp;
if(*a>*b)
temp=*a;
*a=*b;
*b=temp;
)
if(*a>
temp=*a;
*a=*c;
*c=temp;
)
if(*b>*c)
(
temp=*b;
*b-*c;
*c=temp;
)
}
intmain()
(
inta,b,c;
printf("请输入三个整数:\n");
scanfC%d%d%d",如,&b,&c);
sort(&a,&b,&c);
printf("由小到大的顺序输出:\n");
printf(z,%d%d%d\nv,a,b,c);
return0;
)
2.已知一个整型数组x[4],它的各元素值分别为3、118和2使用指针表示法
编写程序,求该数组各元素之积。
#include<stdio.h>
intmainO
{
intx[4]={3,11812};
int*p=x;//指向数组首元素的指针
intproduct=1;
for(inti=0;i<3;i++)
{
product*=*(p+i);//使用指针进行数组访问
)
printf(“数组各元素之积为:%d\n",product);
return0;
)
3.输入10个整数,将其中最小的数与第一个数交换,把最大的数与最后一个数
交换。
#include<stdio.h>
voidswap(int*a,int*b)
(
inttemp=*a;
*a=*b;
*b=temp;
)
intmainO
(
intarr[10];
printf("请输入十个整数:\n");
for(inti=0;i<10;i++)
{
scanf(飞id”,&arr[i]);
)
//找出最小数的下标
intminindex=0;
for(inti=1;i<10;i++)
{
if(arr[i]<arr[minindex])
(
minindex=i;
)
)
//找出最大数的下标
intmaxindex=0;
for(inti=1;i<10;i++)
{
if(arrLiJ>arr[maxIndexJ)
(
maxindex=i;
)
)
//交换最小数和第一个数
swap(&arr[0],&arr[minlndox]);
//交换最大数和最后一个数
swap(&arr[9],&arr[maxIndex]);
printf("交换后的数组为:\n〃);
for(inti=0;i<10;i++)
{
printfC*%d”,arr[i]);
)
printfCAn*);
return0;
)
4.将n个数按输入顺序逆序排列。
ttinclude<stdio.h>
voidreverseArray(intarr[],intn)
(
intstart=0;
intend=n-1;
while(start<end)
{
inttemp=arr[start];
arr[start]=arr[end];
arr[end]=temp;
start++;
end一;
)
}
intmain()
(
intn;
printf("请输入数字的个数:\nO;
scanf(飞d",&n);
intarr[n];
printf(〃请输入数字:\n〃);
for(inti=0;i<n;i++)
scanf("%d”,&arr[i]);
}
reverseArray(arr,n);
printf("逆序排列后例数组为:\n");
for(inti=0;i<n;i++)
{
printf(,,%d”,arr[i]);
)
printf("An");
return0;
)
5.要求从键为y4][4]数组输入数据,使用一维数指针变量输入/输出数元素,并
且分别求出主、次对角线元素之和。
ttinclude<stdio.h>
intmainO
(
inty[4][4]:
int*p=&y[0][0];//一维数指针变量指向二维数组的首元素
printf("请输入4x4的二维数组y的元素:\n");
for(inti=0;i<4;i++)
{
for(intj=0;j<4;j++)
(
scanf("%d1p+i*4+j);〃使用指针访问二维数组的元素
}
)
//计算主对角线元素之和
intprimarySum=0;
for(inti=0;i<4;i++)
(
primarySum+=*(p+i*4+i);
)
//计算次对角线元素之和
intsecondarySuni=0;
for(inti=0;i<4;i++)
secondarySum+=*(p+i*4+(3-i));
}
prinlf(“主对角线元素之和:%d\n,z,primarySum);
printf("次对角线元素之和:%d\n,,»secondarySum);
return0;
}
6.编写一个程序,将一个字符串插入另一个字符串的指定位置。
ttinclude<stdio.h>
#include<string.h>
voidinsertString(char*strl,char*str2,intpos)
(
intlenl=strlen(strl);//获取字符串1的长度
intlen2=strlen(str2);//获取字符串2的长度
if(pos<0||pos>lenl)//检查插入位置是否合法
{
printf(〃插入位置不合法!\n");
return;
)
intnewSize=lenl+len2;//计算插入后的新长度
charnewString[newSize+1];//创建新字符串,+1是为了留出字符串结束符的位
置
//将字符串1的前pos个字符复制到新字符串中
strncpy(newString,strl,pos);
//将字符串2堂制到新字符串中
strncpy(newString+pos,str2,len2);
//将字符串1的剩余部分复制到新字符串中
strncpy(newString+pos+len2,strl+pos,lenl-pos);
newString[newSize]='\0';//添加字符串结束符
printf("插入后的字符串:%s\n,z,newString);
)
intmainO
charstrl[100]:
charstr2[50];
intpos;
printf(“请输入字符串1:\n");
fgets(strl,sizeof(strl),stdin);
strl[strcspn(strl,*\n*)]='\0';//去除字符串1中的换行符
printf(〃请输入字符串2:\n〃);
fgets(str2,sizcof(str2),stdin);
str2[strcspn(str2,*\n*)]=>\0*;//去除字符串2中的换行符
printf(〃请输入插入位置:\n〃);
scanf(飞d”,&pos);
insertString(strl,str2,pos);
return0;
)
7.编写一个程序,用指针操作将一个一维数组中的个整数进行以下处理:顺序将
前面各数后移m个位置,使最后面的m个数变成前面的m个。例如,有5个
数13579,两个后7913。
#include<stdio.h>
voidshiftArray(int*arr,intsize,intm)
(
int*temp=arr+size-1;//指向最后一个元素的指针
//逐个后移m个位置
for(inti=0;i<m;i++)
(
intlast=*temp;//记录最后一个元素的值
//从最后一个元素开始,向前逐个后移
for(intj=size-1;j>0;j一)
(
*(arr+j)=*(arr+j-1);
)
*arr=last;//将最后一个元素加到数组的开头
)
}
intmain()
intarr[100];
intsize,m;
printf("请输入数组拘大小:\nO;
scanf(线d”,&size);
printf(〃请输入数组的元素:\n〃);
for(inti=0;i<size;i++)
{
scanf(飞id",&arr[i]);
)
printf(〃请输入后移的位置数:\n");
scanf(飞d",&m);
shiftArray(arr,size,m);
printf("后移后的数组:\n〃);
for(inti=0;i<size;i++)
(
printf(,z%d”,arr[i]);
)
printf("\n");
return0;
)
8.编写一个程序,使用指针操作将一个矩阵转置,即二维数组a的转置矩阵满
足下列条件:b的行就是a的列。
ttinclude<stdio.h>
voidshiftArray(int*arr,intsize,intm)
(
int*temp=arr+size~1;//指向最后一个元素的指针
//逐个后移m个位置
for(inti=0;i<m;i++)
{
int
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027届山东省滨州市邹平双语学校九上化学期中学业水平测试模拟试题含解析
- 四川省宜宾市南溪区三中学2027届九上物理期末质量检测试题含解析
- 2027届贵州省铜仁伟才学校九上化学期中调研模拟试题含解析
- 阿里市重点中学2027届物理九上期末经典模拟试题含解析
- 社区庆中秋活动方案(二篇)
- 婚前财产赠与协议书官方版(5篇)
- 2027届新疆师大附中九年级化学第一学期期中复习检测模拟试题含解析
- 2027届河北省衡水市故城聚龙中学九年级物理第一学期期末考试模拟试题含解析
- 危重抢救相关考试题目与答案
- 开展三好一满意活动工作总结范文(四篇)
- 保安反恐防暴培训大纲
- 中国急性缺血性卒中诊治指南(2023)解读
- 外贸进口三方合同范本大全
- 异位妊娠破裂出血的应急预案
- 初一新生家长会(共27张课件)
- 《数字电子技术》课程说课课件
- 血透室规章制度
- 帆状胎盘诊治指南
- 周三多-管理学:原理与方法(第七版),第十八章
- 重庆育才中学新初一分班英语试卷含答案
- 教师县内调动商调表
评论
0/150
提交评论