收藏 分销(赏)

C语言编程题.docx

上传人:丰**** 文档编号:10159044 上传时间:2025-04-24 格式:DOCX 页数:10 大小:17.99KB
下载 相关 举报
C语言编程题.docx_第1页
第1页 / 共10页
C语言编程题.docx_第2页
第2页 / 共10页
点击查看更多>>
资源描述
1. 请编写一个函数fun,它的功能是:输入一个整数,判断该整数是否为素数。如果是素数,则输出1,如果是非素数,则输出0. 程序输出后,如果输入5,则输出x=5,x is a prime number,1 #include <stdio.h> #include <math.h>int fun ( int t){int i,k; k=(int)sqrt(t); for(i=2;i<=k;i++) if(t%i==0) break; if(i>k) return 1; else return 0; } void NONO () {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf ; inti ;int x ; fp = fopen("BC365.IN","r");if(fp == NULL) { printf("数据文件BC365.IN不存在!"); return ; } wf = fopen("bc365.out","w"); for(i = 0 ; i< 3 ; i++) {fscanf(fp, "%d", &x); fprintf(wf, "%d\n", fun(x)); } fclose(fp) ; fclose(wf) ;} main( ){ int x; printf("Input x:"); scanf("%d",&x); printf("\nx = %d, x is a prime number,%d\n", x, fun(x));NONO(); } 2. 请编写一个函数fun,它的功能是:利用选择排序法对一个数组中的十个整数从小到大排序。 #include <stdio.h> #include <math.h> void fun ( int x[],intnum) { int i,j,t; for(j=0;j<num-1;j++) for(i=j+1;i<num;i++) if(x[i]<x[j]) {t=x[i];x[i]=x[j];x[j]=t;} } void NONO () {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; inti ; int x ; int b[10]; fp = fopen("bc366.in","r"); if(fp == NULL) { printf("数据文件bc366.in不存在!"); return ; } wf = fopen("bc366.out","w"); for(i = 0 ; i< 10 ; i++) { fscanf(fp, "%d", &x); b[i]=x; } fun(b,10); for(i = 0 ; i< 10 ; i++) { fprintf(wf, "%d\n",b[i]); } fclose(fp) ; fclose(wf) ; } main( ) { inti,a[10]; printf("Input array a:"); for(i=0;i<10;i++) scanf("%d",&a[i]); fun(a,10); for(i=0;i<10;i++) printf("%d",a[i]); NONO(); 3.请编写一个函数fun,它的功能是:输入一个百分制成绩score,用switch语句输出该成绩对应的等级:90<score<100,等级为 A, 80<score<89,等级为 B, 70<score<79,等级为 C, 60Wscore<69,等级为 D, score<60,等级为 E。 程序运行后,如果输入65,则输出为:grade=D #include <stdio.h> #include <math.h> char fun ( float s) {int r; char ch; r=(int)s/10; switch(r) { case 10: case 9:ch='A';break; case 8:ch='B';break; case 7:ch='C';break; case 6:ch='D';break; default:ch='E'; } return(ch); }void NONO () {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; inti ; int x ; fp = fopen("bc371.in","r"); if(fp == NULL) { printf("数据文件bc371.in不存在!"); return ; } wf = fopen("bc371.out","w"); for(i = 0 ; i< 5 ; i++) { fscanf(fp, "%d", &x); fprintf(wf, "%c\n", fun(x)); } fclose(fp) ; fclose(wf) ; } main() { float score; printf("Input score:\n"); scanf("%f",&score); printf("\ngrade = %c\n", fun(score)); NONO(); } 4.请编写一个函数str_cat,它的功能是:将两个字符串str1和str2连接起来,其中,连接后的 str1 和 str2 间加一个空格。如 str1 %"China”,str2 为“Nanjing”,调用 str_cat 后,str1为“China Nanjing”。 不允许使用strcat函数。 #include <stdio.h> #include <string.h> int str_cat ( char x[],char y[]) {int i,j,k; j=strlen(x); k=strlen(y); x[j]=' '; for(i=0;i<k;i++) x[j+1+i]=y[i]; } void NONO ( ) {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; char string1[20],string2[10]; intlen; fp = fopen("bc372.in","r"); if(fp == NULL) { printf("数据文件bc372.in不存在!"); return ; } wf = fopen("bc372.out","w"); // for(i = 0 ; i< 2 ; i++) { fgets( string1,20,fp); len=strlen(string1); string1[len-1]='\0'; fgets(string2,10,fp); len=strlen(string1); string1[len-1]='\0'; str_cat(string1,string2); fputs(string1,wf); // }fclose(fp);fclose(wf); } main() { char str1[20]="China",str2[10]="Nanjing"; str_cat (str1,str2); puts(str1); NONO(); } 5.请编写一个函数fun,它的功能是:用递归函数调用方法,对主函数main传来的参数计算阶乘。 程序运行后,如输入5,输出为:120. #include <stdio.h> #include <math.h>int fun (int t){long m; if(t==0||t==1) m=1; if(t>1) m=t*fun(t-1);return m; } void NONO () {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE *fp, *wf ; inti ; int x ; fp = fopen("bc367.in","r"); if(fp == NULL) { printf("数据文件bc367.in不存在!"); return ; } wf = fopen("bc367.out","w"); for(i = 0 ; i< 3 ; i++) {fscanf(fp, "%d", &x); fprintf(wf, "%d\n", fun(x)); }fclose(fp) ; fclose(wf); }main() {int x; printf("Input x:"); scanf("%d",&x); printf("\nx = %d, factorial of x is:%d\n", x, fun(x)); NONO(); } 6.请编写一个函数character_count,它的功能是:统计并输出字符串中的数字、字母、空格及其他字符个数。如输入“ AbbcD12 3”,则输出: 3 5 2 0 #include <stdio.h> #include <string.h> intcharacter_count ( char x[],int y[]) { int len=strlen(x);char t;int i; for(i=0;i<len;i++) ( t=x[i]; if ((t>='A' && t<='Z') || (t>='a' && t<='z')) y[1]++; else if (t>='0' && t<='9') y[0]++; else if (t=='') y[2]++; else y[3]++; } } void NONO ( ) {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; char string1[80]; inti,t[4]={0}; fp = fopen("bc373.in","r"); if(fp == NULL) { printf("数据文件bc373.in不存在!"); return ; } wf = fopen("bc373.out","w"); fgets( string1,80,fp); character_count(string1,t); for(i=0;i<4;i++) fprintf(wf, "%d\n",t[i]); fclose(fp); fclose(wf); } main() { char str1[80]; inti,coun[4]={0};//coun数组元素用于存放strl字符串中各符号的个数,coun[0]、 coun[1]、coun[2]、coun[3]分别存放数字、字母、空格及其他字符的个数 printf("enter a line of characters:\n"); gets(strl); character_count(str1,coun); for(i=0;i<4;i++) printf("%d\n",coun[i]); NONO(); } 7. 请编写一个函数fun,它的功能是:用冒泡排序法对一个数组中的整数从小到大排序。 #include <stdio.h> #include <math.h> void fun ( int x[],int num) { int i,j,t; for(j=0;j<num-1;j++) for(i=0;i<num-j;i++) if(x[i]>x[i+1]) {t=x[i];x[i]=x[i+1];x[i+1]=t;} } void NONO ( ) {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf ; inti ; int x ; int b[10]; fp = fopen("bc368.in","r");if(fp == NULL) {printf("数据文件bc368.in不存在!"); return ; } wf = fopen("bc368.out","w"); for(i = 0 ; i< 10 ; i++) { fscanf(fp, "%d", &x); b[i]=x; } fun(b,10); for(i = 0 ; i< 10 ; i++) { fprintf(wf, "%d\n",b[i]); } fclose(fp); fclose(wf); } main() { inti,a[10]; printf("Input array a:"); for(i=0;i<10;i++) scanf("%d",&a[i]); fun(a,10); for(i=0;i<10;i++) printf("%4d",a[i]); NONO(); } 8. 请编写一个函数reverse,它的功能是:将一个数组逆序存放。要求采用数组名作为函数参数传递,不允许重新申请内存空间用于存放逆序后的结果。 在主函数中输入十个元素到整型数组 #include <stdio.h> #include <math.h> void reverse ( int x[],int m) {int j,temp; for(j=0;j<(m/2);j++) {temp=x[j];x[j]=x[m-1-j];x[m-1-j]=temp; } } void NONO ( ) {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp, *wf; int x[12]; inti ; fp = fopen("bc370.in","r"); if(fp == NULL) ( printf("数据文件bc370.in不存在!"); return ; } wf = fopen("bc370.out","w"); for(i = 0 ; i< 12 ; i++) fscanf(fp, "%d", &x[i]); reverse(x,12); for(i = 0 ; i< 12 ; i++) fprintf(wf, "%d\n",x[i]); fclose(fp); fclose(wf); } main() { inti,a[10]; printf("enter array a:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("\n"); reverse(a,10); 〃输出逆序后的数组 for(i=0;i<10;i++) printf("%4d",a[i]); printf("\n"); NONO(); } 9. 请编写一个函数bin_search,它的功能是:有一个从小到大排列的一维数组,大小为20,输入一个数,用二分查找法判断该数组中是否有这个数,若有,则输出该数在数组中的下标(数组下标从0开始),若无,输出-1. #include <stdio.h> #include <math.h> intbin_search ( int x[],int m, int key) { int i=0,j=m-1,mid; while(i<=j) { mid=(i+j)/2; if(key>x[mid]) i=mid+1; else if(key<x[mid]) j=mid-1; else return mid; } return -1; }void NONO () {/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/ FILE *fp1, *fp2,*wf ; int a[20]={0},b[10]={0}; inti ; int t=0; fp1 = fopen("bc369-1.in","r"); if(fp1 == NULL) { printf("数据文件 bc369-1.in 不存在!"); return ; } fp2 = fopen("bc369-2.in","r"); if(fp2 == NULL) { printf("数据文件 bc369-2.in 不存在!"); return ; } wf = fopen("bc369.out","w"); for(i = 0 ; i< 18 ; i++) { fscanf(fp1, "%d", &a[i]); } for(i = 0 ; i< 10 ; i++) { fscanf(fp2, "%d", &b[i]); } for(i = 0 ; i< 10 ; i++) { t=bin_search(a,18,b[i]); fprintf(wf, "%d\n",t); } fclose(fp1) ; fclose(fp2); fclose(wf) ; } main( ) { int t=0,n,a[20]={1,3,5,8,12,23,34,37,38,40,42,48,50,57,60,63,69,75,80,84}; printf("enter a number:\n"); scanf("%d",&n); 〃当x存在于数组a中时,t值为1, x不存在与数组a中时,t值为0t=bin_search (a,20,n); if(t>=0) printf("n exists in array a,the position of n is:%d\n",t); else if(t==-1) printf("-1\n"); NONO(); } 10. 最大公约数: int gys(int m,int n) {int x,i,t, k; for(i=1;i<=m&&i<=n;i++) if(m%i==0&&n%i==0) t=i ;return t; } 最小公倍数: int gys(int m,int n) {int x,t,j; if(m>n)t=m; else t=n; for(j=t;!(j%m==0&&j%n==0);j++); return j; }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服