C语言程序设计题目.docx
- 文档编号:8587840
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:35
- 大小:24.80KB
C语言程序设计题目.docx
《C语言程序设计题目.docx》由会员分享,可在线阅读,更多相关《C语言程序设计题目.docx(35页珍藏版)》请在冰豆网上搜索。
C语言程序设计题目
AC语言程序设计教程(第三版)课后习题11.1
定义一个结构体变量(包括年、月、日)。
计算该日在本年中是第几天,注意闰年问题。
struct
{
intyear;
intmonth;
intday;
}tian;
intmain()
{
intdays(intyear,intmonth,intday);
ints;
scanf("%d%d%d",&tian.year,&tian.month,&tian.day);
s=days(tian.year,tian.month,tian.day);
printf("%d\n",s);
}
intdays(intyear,intmonth,intday)
{
inti=month,s,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31},sum=0,leap,j;
if(year%4==0)
{
if(year%100==0)
{
if(year%400==0)
leap=1;
else
leap=0;
}
else
leap=1;
}
else
leap=0;
if(leap&&i>2)
{
for(j=1;j
s=sum+day+1;
}
else
{
for(j=1;j
sum=sum+a[j];
s=sum+day;
}
return(s);
}
BC语言程序设计教程(第三版)课后习题11.3
现有有N个学生的数据记录,每个记录包括学号、姓名、三科成绩。
编写一个函数input,用来输入一个学生的数据记录。
编写一个函数print,打印一个学生的数据记录。
在主函数调用这两个函数,读取N条记录输入,再按要求输出。
N<100【考虑用什么做函数的参数?
结构体变量,还是指向结构体的指针变量,还是用结构体数组名?
】
非结构体做法
#include
intmain()
{
inti,n;
inta[100],b[100],c[100];
chare[100][81],f[100][81];
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%s%s%d%d%d",e[i],f[i],&a[i],&b[i],&c[i]);
for(i=1;i<=n;i++)
printf("%s,%s,%d,%d,%d\n",e[i],f[i],a[i],b[i],c[i]);
return0;
}
C结构体训练
有N个学生,每个学生的数据包括学号、姓名、3门课的成绩,从键盘输入N个学生的数据,要求打印出3门课的总平均成绩,以及最高分的学生的数据(包括学号、姓名、3门课成绩)
注意:
刻画学生的数据类型必须用结构体类型。
不能用多个数组解决
#include
intmain()
{
structstu{
intnum;
charname[20];
intscore1;
intscore2;
intscore3;
}boy[1024];
intN,i,s,s1=0,s2=0,s3=0,max=0,c;
floatave1,ave2,ave3;
scanf("%d",&N);
for(i=0;i { scanf("%d%s%d%d%d",&boy[i].num,&boy[i].name,&boy[i].score1,&boy[i].score2,&boy[i].score3); s1+=boy[i].score1; s2+=boy[i].score2; s3+=boy[i].score3; s=boy[i].score1+boy[i].score2+boy[i].score3; if(s>max) { max=s; c=i; } } ave1=(s1*1.0)/(N*1.0); ave2=(s2*1.0)/(N*1.0); ave3=(s3*1.0)/(N*1.0); printf("%.0f%.0f%.0f\n",ave1,ave2,ave3); printf("%d%s%d%d%d\n",boy[c].num,boy[c].name,boy[c].score1,boy[c].score2,boy[c].score3); } D矩阵转置 输入N*N(N<100)的矩阵,输出它的转置矩阵。 #include intmain() { intN,a[100][100],i,j,b[100][100]; scanf("%d\n",&N); for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i for(j=0;j b[j][i]=a[i][j]; for(i=0;i { for(j=0;j printf("%d",b[i][j]); printf("%d\n",b[i][N-1]); } } E求矩阵的外围元素之和 求矩阵的外围元素之和 #include intmain() { inta[10][10],i,j,N,s=0; scanf("%d\n",&N); for(i=0;i for(j=0;j { scanf("%d",&a[i][j]); if(i==0||j==0||i==N-1||j==N-1) s=s+a[i][j]; } printf("%d",s); } F求n到m之间的素数并输出 求n到m以内的素数(包含n,m,且m>=n>=10,n<=m<=100)n和m由键盘输入,并将这些素数存储到数组a中并输出(每个素数后面带一个空格) 要求: (1)编写如下接口的功能函数: intfun(intn),该函数的功能是判断n是不是素数。 若是,返回1,若不是返回0。 (2)main函数去调用该功能函数 #include intfun(intn) { intt; for(t=2;t if(n%t==0)break; if(t elsereturn1; } intmain() { intn,m,i,a[90],j=0,b; scanf("%d,%d",&n,&m); for(i=n;i<=m;i++) { if(fun(i)==1) a[j++]=i; } for(b=0;b printf("%d",a[b]); } G<编程题>删除字符串中的特殊符号 指定字符串中仅包含字母(含大小写),空格和星号*,编写自定义函数fun,删除其中的*。 程序的主体框架已经提供在下面,可以直接复制粘贴到答题框。 注意仅能改动注释之内的内容,注释外内容不得修改,否则将被判违规。 voidfun(char*p) { /*****注释1: 答题请在本行与注释2之间编写程序。 本行注释不得删除****/ char*p1,*p2; for(p1=p2=p;*p1;p1++) if(*p1! ='*') *p2++=*p1; *p2=0; returnp; /*****注释2: 答题请在本行与注释1之间编写程序。 本行注释不得删除****/ } intmain() { charb[1024]; while(gets(b)! ='\0') { fun(b); printf("%s\n",b); } return1; } H<改错题>冒泡排序 下列给定程序中函数fun的功能是: 用冒泡法对6个字符串按由小到大的顺序进行排序。 请改正程序中的错误,使它能得出正确的结果。 注意: 不要改动main函数,不得增行或删行,也不得更改程序的结构.改错位置已经标注为found,所有改错只能在found附近修改。 #include #include #defineMAXLINE20 fun(char*pstr[6]) { inti,j; char*p; for(i=0;i<5;i++) { /**********found***************/ for(j=i+1;j<6;j++) { if(strcmp(*(pstr+i),*(pstr+j))>0) { p=*(pstr+i); /**********found***************/ *(pstr+i)=*(pstr+j); *(pstr+j)=p; } } } } intmain() { inti; char*pstr[6],str[6][MAXLINE]; for(i=0;i<6;i++) pstr[i]=str[i]; for(i=0;i<6;i++) scanf("%s",pstr[i]); fun(pstr); printf("TheStringaftersorting: \n"); for(i=0;i<6;i++) printf("%s\n",pstr[i]); return0; } I<填空题>2015C二级考试无纸化操作题 (2) 下列给定程序中,函数fun的功能是: 把形参a所指数组中的最小值放在元素a[O]中,接着把a所指数组中的最大值放在a[1]元素中;再把a所指数组元素中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3],依此类推。 例如,若a所指数组中的数据最初排列为: 9,1,4,2,3,6,5,8,7;则按规则移动后,数据排列为: 1,9,2,8,3,7,4,6,5。 形参n中存放a所指数组中数据的个数。 规定fun函数中的max存放当前所找的最大值,px存放当前所找最大值的下标。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意: 部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! voidfun(char*p) { /*****注释1: 答题请在本行与注释2之间编写程序。 本行注释不得删除****/ char*p1,*p2; for(p1=p2=p;*p1;p1++) if(*p1! ='*') *p2++=*p1; *p2=0; returnp; /*****注释2: 答题请在本行与注释1之间编写程序。 本行注释不得删除****/ } intmain() { charb[1024]; while(gets(b)! ='\0') { fun(b); printf("%s\n",b); } return1; } J编辑部的故事 (1) 文艺青年杂志社对作者按字符数付稿酬。 编辑部的编辑遇到一个烦心事,最近作者群中流行“咆哮体”文书,一句话里带有很多个感叹号,而且咆哮体中经常混杂着“有木有”和“尼玛”这样无用的词语,使得杂志的额外支出大大增加。 你需要帮助解决这一个问题,将文本中多个连续的感叹号,无用的“有木有”和“尼玛”等无用的词。 K<改错题>39 下面程序中函数fun的功能是: 统计p2子字符串在p1所指的主字符串中出现的次数。 请改正程序中的错误,使得它能得出正确结果 #include intfun(char*p1,char*p2) { inti,j,k,num=0; /*****found****/ for(i=0;p1[i];i++) for(j=i,k=0;p2[k]==p1[j];k++,j++) if(p2[k+1]=='\0') { num++; Break; } returnnum; } intmain() { charstr[80],substr[80]; gets(str); gets(substr); printf("%d",fun(str,substr)); return0; } L<编程题>33 编写函数fun,其功能是找出M×N的二维浮点数组中最大元素的值,将这个数输出。 (M,N均小于100) voidfun(float*p,intM,intN) { floatmx=*(p+0); /******begin******/ inti; for(i=0;i<1024;i++) if(*(++p)>mx) mx=*p; /*******end******/ printf("%.4f",mx); } intmain() { inta[100][100],M,N,i,j; scanf("%d%d",&M,&N); for(i=0;i for(j=0;j scanf("%f",&a[i][j]); fun(&a[0][0],M,N); return0; } M第七章之找到第一名 (1) 某市进行了一次英语竞赛,一共有N个人报名参加(N<1000000),按照报名顺序分别是1号~N号。 英语竞赛的得分范围是0~100分,可能会有0.5分存在。 现在给你N的值和按照号码排列的得分,要求输出第一名的号码。 若是有并列第一名则需要同属输出多个第一名的号码。 #include intmain() { inta[100],N,i,max=0,n; scanf("N=%d",&N); for(i=0;i { scanf("%d",&a[i]); if(a[i]>max) max=a[i]; } for(i=0;i { if(max==a[i]) { n=i+1; printf("%d\n",n); } } } N第七章之删除数组元素 (1) 输入N个大小范围在0~100(含0和100)的整数(N<100),并未排序且不重复。 从中寻找一个指定的数的下标号(从1开始),从数组中删除,并将剩余的数组内容输出。 #include intmain() { intn,a[99],i,b; scanf("N=%d",&n); for(i=0;i<=n-2;i++) { scanf("%d,",&a[i]); }scanf("%d",&a[n-1]); scanf("%d",&b); if(b! =n) { for(i=0;i<=b-2;i++) { Printf("%d,",a[i]); } for(i=b;i<=n-2;i++) { printf("%d,",a[i]); }printf("%d",a[n-1]); } else { for(i=0;i<=n-3;i++) { printf("%d,",a[i]); }printf("%d",a[n-2]); } } O第七章之冒泡排序法 (1) 使用冒泡排序法对数组元素进行排序,要求输出每一趟排序后的数组内容。 数组大小N<10,数组元素定为正整型。 #include intmain() { inta[10],i=0,j,n,t,m; while(scanf("%d",&a[i])! =EOF) i++; n=i; for(i=0;i { for(j=0;j if(a[j]>a[j+1]) { t=a[j]; a[j]=a[j+1]; a[j+1]=t; } printf("%d",a[0]); for(m=1;m printf(",%d",a[m]); printf("\n"); } } P所有串长超过k的字符串中后面的字符删除 函数fun的功能是: 在形参ss所指字符串数组中,将所有串长超过k(K<=N)。 的字符串中后面的字符删除,只保留前面的k个字符。 ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)。 #include voidfun(charss[][11],intM,intk) { /*******yourcodestart******/ inti=0; while(i { ss[i][k]='\0'; i++; } /******yourcodeend******/ } intmain() { intM,k,i; charss[5][11]; scanf("%d",&M); scanf("%d",&k); gets(ss[0]); for(i=0;i gets(ss[i]); fun(ss,M,k); for(i=0;i puts(ss[i]); return0; } Q字符串按长度由短到长进行排序 函数fun的功能是: 在形参ss所指字符串数组中,将所有串长超过k(K<=N)。 的字符串中后面的字符删除,只保留前面的k个字符。 ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)。 #include #include voidfun(charss[][11],intM) { char*ps[5],*tp; inti,j,k; for(i=0;i for(i=0;i { k=i; for(j=i+1;j if(strlen(ps[k])>strlen(ps[j])) k=j; tp=ps[i]; ps[i]=ps[k]; ps[k]=tp; } for(i=0;i puts(ps[i]); } intmain() {intM,i; charss[5][11]; scanf("%d",&M); gets(ss[0]); for(i=0;i fun(ss,M); } R补齐字符串 函数fun的功能是: 求出形参ss所指字符串数组中最长字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。 字符串数组中共有M(M<=5)个字符串,且串长小于N。 (N<=10) #include #include voidfun(charss[][11],intM) {inti,j,k=0,n,m,len; for(i=0;i {len=strlen(ss[i]); if(i==0)n=len; if(len>n) { n=len; k=i; } } for(i=0;i if(i! =k) {m=n;(最大长) len=strlen(ss[i]); for(j=len;j>=0;j--) ss[i][m--]=ss[i][j]; for(j=0;j ss[i][j]='*'; } } intmain() {intM,i; charss[5][11]; scanf("%d",&M); gets(ss[0]); for(i=0;i fun(ss,M); for(i=0;i } S每个单词的第一个字母改成大写 读入一个英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里"单词"是指由空格隔开的字符串)。 #include #include"ctype.h" #include"string.h" voidupfst(char*p) { if(*p! ='\0') { *p=toupper(*p); p++; } for(;*p;p++) if(*(p-1)==''&&*p! ='') *p=toupper(*p); } intmain() { charchrstr[81]; gets(chrstr); upfst(chrstr); printf("%s\n",chrstr); return0; } T文本分析2 函数fun的作用是: 统计整型变量m中各数字出现的次数,并存放到数组a中,其中: a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数 #include voidfun(intm,inta[10]) {inti; for(i=0;i<10;i++) a[i]=0; while(m>0){ i=m%10; a[i]++; m=m/10; } } intmain() { intm,a[10],i; scanf("%d",&m); fun(m,a); for(i=0;i<10;i++) printf("%d,",a[i]); printf("\n"); } U删除所有串长超过k的字符串 函数fun的功能是: 从形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回剩余字符串的个数,并输出剩下的字符串。 ss所指字符串数组中共有M(M<=5)个字符串,且串长小于N(N<=10)), #include #include intfun(charss[][11],intM,intk) { inti,j=0,l; for(i=0;i { l=strlen(ss[i]); if(l<=k) strcpy(s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 题目