14级程序设计基础题库c语言68更新2.docx
《14级程序设计基础题库c语言68更新2.docx》由会员分享,可在线阅读,更多相关《14级程序设计基础题库c语言68更新2.docx(15页珍藏版)》请在冰豆网上搜索。
14级程序设计基础题库c语言68更新2
六、字符串(10道抽1道,写代码)
1、编写程序,用你的英文名字初始化一个字符串,然后输出,如John(较易)
#include
#include
voidmain()
{
charname[10]={"john"};
puts(name);
}
2、请定义一个长度为10的字符串,并将其输出显示。
(较易)
#include
#include
voidmain()
{
charname[10]={"johnghasd"};
puts(name);
}
3、定义2串密码,判断该两串密码是否一致。
(较难)
#include
#include
voidmain()
{
chars1[10]={"johnghasd"};
chars2[10]={"gaoshglks"};
if(strcmp(s1,s2)==0)
printf("一致\n");
else
printf("不一致\n");
}
4、反向加密:
定义任意长度的密码,输出反向的密码。
(较易)
5、判断字符串是否为回文串。
(提示:
回文字符串是具有回文特性的字符串:
即该字符串从左向右读和从右向左读一样,如12321)(难)
6、将字符串中的小写字母改为相应的大写字母。
(难)
#include
#include
voidmain()
{
charstr[10]={"bcaefd"};
inti;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='a'&&str[i]<='z')
str[i]-=32;
puts(str);
}
7、定义两个字符串,比较两个字符串的长度,输出较长的字符串。
若两个字符串长度相同,则输出第一个字符串。
(较难)
#include
#include
voidmain()
{
charstr1[10]={"bcaefd"};
charstr2[10]={"gfsdhf"};
inti,j;
i=strlen(str1);
j=strlen(str2);
if(iputs(str2);
else
puts(str1);
}
8、定义一字符串,输出字符串中第一个出现字母a的位置,如没有则输出-1。
(难)
#include
voidmain()
{
charstr[100]={"bca452adefb543s53d"};
inti,n=0;
for(i=0;str[i]!
='\0';i++)
{
if(str[i]=='a')
n=i;
if(n>0)
break;
}
printf("%d\n",n+1);
}
9、定义一字符串,统计该字符串中数字的个数。
(较难)
#include
voidmain()
{
charstr[100]={"abc452defb543s53d"};
inti,n=0;
for(i=0;str[i]!
='\0';i++)
if(str[i]>='0'&&str[i]<='9')
n++;
printf("%d\n",n);
}
10、定义两个字符串,合并成一个新的字符串并输出。
(较难)
#include
#include
voidmain()
{
charstr1[100]={"abcdefbsd"};
charstr2[]={"3421sd"};
printf("%s\n",strcat(str1,str2));
}
七、函数(抽1道,写代码)
注:
在分支结构中任抽一题,要求用函数实现。
(较难)
八、指针(10道抽1道,写代码)
11、定义函数求2个整数的最大值(要求使用指针变量作函数参数来实现)。
(较难)P226
#include
intmain()
{
voidswap(int*p1,int*p2);
inta,b;
int*p1,*p2;
printf("请输入两个整数给ab:
\n");
scanf("%d%d",&a,&b);
p1=&a;
p2=&b;
if(a
swap(p1,p2);
printf("max=%d\n",a);
return0;
}
voidswap(int*p1,int*p2)
{
inttemp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
12、定义函数实现两个float型数的交换(要求使用指针变量作函数参数来实现)(较难)
#include
intmain()
{
voidswap(float*p1,float*p2);
floata,b;
float*p1,*p2;
printf("请输入两个数给ab:
\n");
scanf("%f%f",&a,&b);
p1=&a;
p2=&b;
swap(p1,p2);
printf("a=%0.2fb=%0.2f\n",a,b);
return0;
}
voidswap(float*p1,float*p2)
{
floattemp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
13、定义(返回指针)函数求三个数的最大值。
(较难)
#include
intmain()
{
inta,b,c;
int*max(intx,inty,intz);
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",*max(a,b,c));
}
int*max(intx,inty,intz)
{
intf,*q;
f=x;
if(x{
f=y;
}
if(y{
f=z;
}
q=&f;
returnq;
}
14、定义(返回指针)函数求三个数的和。
(较难)
#include
intmain()
{
inta,b,c;
int*max(intx,inty,intz);
scanf("%d%d%d",&a,&b,&c);
printf("%d\n",*max(a,b,c));
}
int*max(intx,inty,intz)
{
intf,*q;
f=x+y+z;
q=&f;
returnq;
}
15、定义函数求x,y中的较小数(要求用指向函数的指针实现)。
(难)
P269
#include
intmain()
{
intmin(int,int);
int(*p)(int,int);
inta,b,c;
(*p)=min;
scanf("%d%d",&a,&b);
c=(*p)(a,b);
printf("min=%d\n",c);
return0;
}
intmin(intx,inty)
{
if(x>y)
returny;
else
returnx;
}
16、定义函数求x,y中的较大数(要求用指向函数的指针实现)。
(难)
#include
intmain()
{
intmax(int,int);
int(*p)(int,int);
inta,b,c;
(*p)=max;
scanf("%d%d",&a,&b);
c=(*p)(a,b);
printf("max=%d\n",c);
return0;
}
intmax(intx,inty)
{
if(xreturny;
else
returnx;
}
17、求一个字符串中的数字字符之和。
(要求用指向字符串的指针实现)(难)
#include
#include
intmain()
{
char*p,a[20];
inti,j=0;
gets(a);
for(i=0;i<20;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
p=(a+i);
j+=*p-48;
}
}
printf("%d\n",j);
}
18、输出字符串长度。
(要求用指向字符串的指针实现)(难)
#include
#include
voidmain()
{
char*p,a[100];
inti,j=0;
gets(a);
for(i=0;a[i]!
='\0';i++)
{
p=(a+i);
j++;
}
printf("%d\n",j);
}
19、键盘输入10个数,输出10个数的和(指向一维数组的指针实现)。
(难)
#include
intmain()
{
int*p,i,j=0,a[10];
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
p=&a[i];
j=j+*p;
}
printf("%d\n",j);
}
20、键盘输入10个数,输出10个数的最大值(指向一维数组的指针实现)。
(难)
#include
intmain()
{
int*p,i,max,a[10];
for(i=0;i<10;i++)
scanf("%d",&a[i]);
p=a;
max=a[0];
for(i=1;i<10;i++)
if(max<*(p+i))
max=*(p+i);
printf("max=%d\n",max);
}
九、数据类型(10道抽1道,写代码)
structstudent
{
};
21、定义一个日期结构体变量(年、月、日),定义包含3个日期信息的数组,输出这些日期信息。
(较难)
#include
intmain()
{
structdate
{
inty;
intm;
intd;
};
structdates[3]={{2015,4,28},{2015,3,4},{2015,3,5}};
inti;
for(i=0;i<=2;i++)
printf("%d%d%d\n",s[i].y,s[i].m,s[i].d);
return0;
}
22、定义一个结构体,管理员工的信息(工号,姓名,工资),定义包含3个员工信息的数组,输出这些员工信息记录。
(较难)
#include
intmain()
{
structygxx
{
intgh;
charxm[10];
floatgz;
};
structygxxs[3]={{001,"xiao",2800},{002,"adsd",40000},{003,"fdag",5000}};
inti;
for(i=0;i<=2;i++)
printf("%d%s%f\n",s[i].gh,s[i].xm,s[i].gz);
return0;
}
23、定义一个结构体,管理学生的成绩(姓名,学号,成绩),定义包含3个学生信息的数组,输出这些学生信息记录。
(较难)
#include
intmain()
{
structygxx
{
charxm[10];
intxh;
floatcj;
};
structygxxs[3]={{"yang",001,80},{"wang",002,94},{"zhang",003,89}};
inti;
for(i=0;i<=2;i++)
printf("%s%d%f\n",s[i].xm,s[i].xh,s[i].cj);
return0;
}
24、定义一个结构体,管理学生的成绩(姓名,学号,成绩),从键盘输入3个学生的数据后,求平均成绩。
(难)
#include
intmain()
{
structygxx
{
charxm[10];
intxh;
floatcj;
}s[3];
inti;
floatsum=0,avg=0;
for(i=0;i<=2;i++)
{
scanf("%s%d%f",s[i].xm,&s[i].xh,&s[i].cj);
sum+=s[i].cj;
}
avg=sum/3;
printf("avg=%0.1f\n",avg);
return0;
}
25、定义一个结构体,管理学生的成绩(姓名,学号,成绩),从键盘输入5个学生的数据后,求最高分。
(难)
#include
intmain()
{
structygxx
{
charxm[10];
intxh;
floatcj;
}s[5];
inti,j;
floatmax;
for(i=0;i<=4;i++)
scanf("%s%d%f",s[i].xm,&s[i].xh,&s[i].cj);
max=s[0].cj;
for(j=1;j<=4;j++)
if(max
max=s[j].cj;
printf("max=%0.1f\n",max);
return0;
}
26、定义一个结构体,管理学生的成绩(姓名,学号,成绩),从键盘输入5个学生的数据后,求5个学生的总成绩。
(难)
#include
intmain()
{
structygxx
{
charxm[10];
intxh;
floatcj;
}s[5];
inti;
floatsum=0;
for(i=0;i<=4;i++)
{
scanf("%s%d%f",s[i].xm,&s[i].xh,&s[i].cj);
sum+=s[i].cj;
}
printf("sum=%0.1f\n",sum);
return0;
}
enum[枚举名]{枚举元素列表};
27、定义一个结构体表示日期,包含年、月、日、星期,其中星期用枚举类型实现,用今天的日期将其初始化。
(难)
#include
intmain()
{
enumWeekday{sun,mon,tue,wed,thu,fri,sat};
enumWeekdayi;
structdate
{
inty;
intm;
intd;
};
structdates={2015,7,2};
i=wed;
return0;
}
28、定义一个结构体表示日期,包含年、月、日、星期,其中星期用枚举类型实现,用(2015-4-28星期二)将其初始化。
(难)
#include
intmain()
{
enumWeekday{sun,mon,tue,wed,thu,fri,sat};
enumWeekdayi;
structdate
{
inty;
intm;
intd;
};
structdates={2015,4,28};
i=tue;
return0;
}
29、编写一个函数,向一个动态链表插入结点。
(难)
30、编写一个函数,删除动态链表中某结点。
(难)