参考编程题库.docx
- 文档编号:23873715
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:25
- 大小:29.88KB
参考编程题库.docx
《参考编程题库.docx》由会员分享,可在线阅读,更多相关《参考编程题库.docx(25页珍藏版)》请在冰豆网上搜索。
参考编程题库
1、删除一个字符串中所有的空格
1.函数delspace的功能是删除一个字符串中所有的空格。
例如,输入字符串为"Thisisastring",则输出结果为"Thisisastring"。
测试用主函数如下所示,请编制函数delspace。
#include
#include
voidmain()
{char*delspace(char*str);
chars[81],*ds;
gets(s);
ds=delspace(s);
printf("\nResult:
%s\n",ds);
}
char*delspace(char*str)
{char*p=str;
while(*p)
{if(*p=='')
strcpy(p,p+1);
else
p++;
}
returnstr;
}
Iamastudent.
Result:
Iamastudent.
Pressanykeytocontinue
2、求3位数
2.已知两个3位数abc和cba之和为1333(即abc+cba=1333),编程序求出3个数字a、b和c。
#include
voidmain()
{intn,a,b,c;
for(n=100;n<1000;n++)
{a=n/100;
b=n/10%10;
c=n%10;
if(a*100+b*10+c+c*100+b*10+a==1333)
printf("abcis:
%d%d%d\n",a,b,c);
}
}
abcis:
419
abcis:
518
abcis:
617
abcis:
716
abcis:
815
abcis:
914
Pressanykeytocontinue
3、求同构数
3.若一个数出现在自己平方数的右边,则称该数为同构数。
如,因有5*5=25,25*25=625,所以5和25都是同构数;请编制程序找出1~100之间的全部同构数。
#include
voidmain()
{intcheck(intn);
intn;
for(n=1;n<=100;n++)
if(check(n))
printf("%d,%d\n",n,n*n);
}
intcheck(intn)
{intk;
k=n*n;
if(k%10==n||k%100==n)
return1;
else
return0;
}
1,1
5,25
6,36
25,625
76,5776
Pressanykeytocontinue
4、有序数组插入元素
4.编程序实现功能:
在一个元素值按升序存放的整型数组中插入一个数,使得插入后的数组元素仍然有序
#include
#defineN5
voidmain()
{inta[N+1],x,i,k;
for(i=0;i scanf("%d",&a[i]); scanf("%d",&x); for(i=0;a[i] ; for(k=N;k>i;k--) a[k]=a[k-1]; a[i]=x; for(i=0;i<=N;i++) printf("%5d",a[i]); putchar('\n'); } 3467889124367 89 348967889124367 Pressanykeytocontinue #include #defineN5 voidmain() {voidinsert(intv[],intn,intx); inta[N+1],x,i; for(i=0;i scanf("%d",&a[i]); scanf("%d",&x); insert(a,N,x); for(i=0;i<=N;i++) printf("%5d",a[i]); putchar('\n'); } voidinsert(intv[],intn,intx) { inti,k; for(i=0;v[i] ; for(k=N;k>i;k--) v[k]=v[k-1]; v[i]=x; } 23456789999 89 2345678989999 Pressanykeytocontinue 5、求满足条件最小正整数 5.编程序实现功能: 一个正整数与3的和是5的倍数,与3的差是6的倍数,求出符合此条件的最小正整数。 #include voidmain() {inti; for(i=9;;i++) {if((i+3)%5==0&&(i-3)%6==0) {printf("%d\n",i); break; } } } 27 Pressanykeytocontinue 6、颠倒字符串 6.函数reverse的原型为: voidreverse(chars[]);,其功能是将字符串s中的字符位置颠倒。 例如,字符串“abcdefg”中的字符位置颠倒后变为“gfedcba”。 编制函数reverse并用相应的主函数进行测试。 #include #include voidreverse(chars[]) {inti,j; charc; for(i=0,j=strlen(s)-1;i {c=s[i]; s[i]=s[j]; s[j]=c; } } voidmain() {chars[100]; puts("inputastring: "); gets(s); reverse(s); puts(s); } inputastring: GreatWallChina anihCllaWtaerG Pressanykeytocontinue 7、求3位整数 7.编程序实现功能: 求出所有各位数字的立方和等于1099的3位整数。 #include voidmain() {inta,b,c; for(a=1;a<=9;a++) for(b=0;b<=9;b++) for(c=0;c<=9;c++) if(a*a*a+b*b*b+c*c*c==1099) printf("%d%d%d\n",a,b,c); } 379 397 739 793 937 973 Pressanykeytocontinue #include voidmain() {inta,b,c,n; for(n=100;n<1000;n++) { a=n/100; b=n%100/10; c=n%10; if(a*a*a+b*b*b+c*c*c==1099) printf("%d%d%d\n",a,b,c); } } 379 397 739 793 937 973 Pressanykeytocontinue 8、截子串 8.函数cut的原型为: char*cut(char*s,intm,intn);,其功能是: 从字符串s中第m个位置开始,截取含有n个字符的子串;若从m开始剩余的字符不足n个,则截取剩余的所有字符;函数返回所截子串的首地址。 编制函数reverse并用相应的主函数进行测试。 #include char*cut(char*,int,int); voidmain() { chars[]="goodmorning"; char*p; p=cut(s,10,4); printf("%s\n",p); } char*cut(char*s,intm,intn) { inti; staticcharsub[20]; for(i=0;i sub[i]=s[m+i-1]; sub[i]='\0'; returnsub; } ng Pressanykeytocontinue 9、求阶乘的累加和 9.求阶乘的累加和(即求1! +2! +3! +4! +5! +…+20! ) 代码: #include intmain() {doubles=0,t=1; intn; for(n=1;n<=20;n++) { t=t*n; s=s+t; } printf("1! +2! +...+20! =%22.15e\n",s); return0; } 结果: 1! +2! +...+20! =2.561327494111820e+018 Pressanykeytocontinue 10、求水仙花数 求出所有"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该本身。 例如: 153是一个水仙花数,因为153=1^3+5^3+3^3。 代码: #include intmain() { inti,j,k,n; printf("parcissusnumbersare"); for(n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return0; } 结果: parcissusnumbersare153370371407 Pressanykeytocontinue 11、求素数 用筛法求100之内的素数。 代码: #include #include intmain() {inti,j,n,a[101]; for(i=1;i<=100;i++) a[i]=i; a[1]=0; for(i=2;i for(j=i+1;j<=100;j++) {if(a[i]! =0&&a[j]! =0) if(a[j]%a[i]==0) a[j]=0; } printf("\n"); for(i=2,n=0;i<=100;i++) {if(a[i]! =0) {printf("%5d",a[i]); n++; } if(n==10) {printf("\n"); n=0; } } printf("\n"); return0; } 结果: 2357111317192329 31374143475359616771 7379838997 Pressanykeytocontinue 12、选择法排序 用选择法对10个整数从小到大排序。 代码: #include intmain() {inti,j,min,temp,a[11]; printf("enterdata: \n"); for(i=1;i<=10;i++) {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("Theorginalnumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for(i=1;i<=9;i++) {min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j])min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThesortednumbers: \n"); for(i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return0; } 结果: enterdata: a[1]=34 a[2]=86 a[3]=92 a[4]=16 a[5]=69 a[6]=62 a[7]=29 a[8]=95 a[9]=60 a[10]=8 Theorginalnumbers: 3486921669622995608 Thesortednumbers: 8162934606269869295 Pressanykeytocontinue 13、输出杨辉三角形 输出以下的杨辉三角形(要求打印出10行)。 1 11 121 1331 14641 15101051 ∶ 代码: #include #defineN10 intmain() {inti,j,a[N][N]; for(i=0;i {a[i][i]=1; a[i][0]=1; } for(i=2;i for(j=1;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=0;i {for(j=0;j<=i;j++) printf("%6d",a[i][j]); printf("\n"); } printf("\n"); return0; } 结果: 1 11 121 1331 14641 15101051 1615201561 172135352171 18285670562881 193684126126843691 Pressanykeytocontinue 14、起泡法排序 写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。 代码: #include #include #defineN10 charstr[N]; intmain() {voidsort(char[]); inti,flag; for(flag=1;flag==1;) {printf("inputstring: \n"); scanf("%s",&str); printf("Inputedstringis: %s\n",str); if(strlen(str)>N) printf("stringtoolong,inputagain! "); else flag=0; } sort(str); printf("stringsorted: \n"); for(i=0;i printf("%c",str[i]); printf("\n"); return0; } voidsort(charstr[]) {inti,j; chart; for(j=1;j for(i=0;(i ='\0');i++) if(str[i]>str[i+1]) {t=str[i]; str[i]=str[i+1]; str[i+1]=t; } } 结果: inputstring: Goodbye Inputedstringis: Goodbye stringsorted: 15、字符串排序 用指向指针的指针的方法对5个字符串排序输出。 代码: #include #include #defineLINEMAX20/*定义字符串的最大长度*/ intmain() { intsort(char**p); inti; char**p,*pstr[5],str[5][LINEMAX]; for(i=0;i<5;i++) pstr[i]=str[i];/*将第i个字符串的首地址赋予指针数组pstr的第i个元素*/ printf("input5strings: \n"); for(i=0;i<5;i++) scanf("%s",pstr[i]); p=pstr; sort(p); printf("stringssorted: \n"); for(i=0;i<5;i++) printf("%s\n",pstr[i]); } intsort(char**p)/*冒泡法对5个字符串排序函数*/ {inti,j; char*temp; for(i=0;i<5;i++) {for(j=i+1;j<5;j++) {if(strcmp(*(p+i),*(p+j))>0)/*比较后交换字符串地址*/ {temp=*(p+i); *(p+i)=*(p+j); *(p+j)=temp; } } } return0; } 结果: input5strings: wang zhu liu ming xue stringssorted: liu ming wang xue zhu Pressanykeytocontinue 16、打印学生数据 编写一个函数print,打印一个学生的成绩数,该数组中有5个学生的数据记录,每个记录包括num、name、sore[3],用主函数输入这些记录,用print函数输出这些记录。 代码: #include #defineN5 structstudent {charnum[6]; charname[8]; intscore[4]; }stu[N]; intmain() {voidprint(structstudentstu[6]); inti,j; for(i=0;i {printf("\ninputscoreofstudent%d: \n",i+1); printf("NO.: "); scanf("%s",stu[i].num); printf("name: "); scanf("%s",stu[i].name); for(j=0;j<3;j++) {printf("score%d: ",j+1); scanf("%d",&stu[i].score[j]); } printf("\n"); } print(stu); return0; } voidprint(structstudentstu[6]) {inti,j; printf("\nNO.namescore1score2score3\n"); for(i=0;i {printf("%5s%10s",stu[i].num,stu[i].name); for(j=0;j<3;j++) printf("%9d",stu[i].score[j]); printf("\n"); } } 结果: inputscoreofstudent1: NO.: 110 name: Liu score1: 34 score2: 56 score3: 67 inputscoreofstudent2: NO.: 120 name: Wang score1: 88 score2: 87 score3: 95 inputscoreofstudent3: NO.: 130 name: Ming score1: 83 score2: 89 score3: 97 inputscoreofstudent4: NO.: 140 name: Zhu score1: 46 score2: 35 score3: 68 inputscoreofstudent5: NO.: 150 name: Wei score1: 56 score2: 86 score3: 93 NO.namescore1score2score3 110Liu345667 120Wang888795 130Ming838997 140Zhu463568 150Wei568693 Pressanykeytocontinue 17、ASCII磁盘文件读写 从键盘输入若干行字符(每行长度不等),输入后把它们存储到一磁盘文件中。 再从该文件中读入这些数据,将其中小写字母转换成大写字母后在显示屏上输出。 代码: #include intmain() {inti,flag; charstr[80],c; FILE*fp; fp=fopen("text","w"); flag=1; while(flag==1) {printf("inputstring: \n"); gets(str); fprintf(fp,"%s",str); printf("continue? "); c=getchar(); if((c=='N')||(c=='n')) flag=0; getchar(); } fclose(fp); fp=fopen("text","r"); while(fscanf(fp,"%s",str)! =EOF) {for(i=0;str[i]! ='\0';i++) if((str[i]>='a')&&(str[i]<='z')) str[i]-=32; printf("%s\n",str); } fclose(fp); return0; } 结果: inputstring: Mike continue? y inputstring: Maclikeplaying continue? y inputstring: Basketball continue? n M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 参考 编程 题库