收藏 分销(赏)

编程练习题汇总.doc

上传人:天**** 文档编号:10821218 上传时间:2025-06-18 格式:DOC 页数:15 大小:48.63KB 下载积分:8 金币
下载 相关 举报
编程练习题汇总.doc_第1页
第1页 / 共15页
编程练习题汇总.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
期中考之耻 编程题 输出数组中的数不能出现重复的 void asd(int w[],int l){     int a=0;     float x=0,y=0,n=0;     for(a=1;a<=l;a++){         x+=w[a];         y+=pow(w[a],2);     }     printf("%.2f ",x/l);     n=sqrt((y-pow(x,2)/l)/(l-1));     printf("%.2f",n); #include<stdio.h> int main(){     int t=0,test=0;     scanf("%d",&test);     while(t<test){         t++;         long a[100]={0},b[100]={0};         int n=0,num=0;         scanf("%d",&n);         for(;num<n;num++){             scanf("%ld",&a[num]);         }         b[0]=a[0];         int i=0,j=0,yes=1,cnt=0;         for(i=0;i<n;i++){             for(j=0,yes=1;j<n;j++){                 if(a[i]==b[j]){                     yes=0;                     break;                 }             }             if(yes==1){                 cnt++;                 b[cnt]=a[i];             }         }         int k=0;         for(k=0;k<=cnt;k++){             printf("%ld",b[k]);             if(k<cnt){                 printf(" ");             }         }         printf("\n");     } } 输出质数 #include<stdio.h> #include<math.h> int main(){     int n=0,cnt=1,yes=1;//a[10000]={0};     scanf("%d",&n);     int a=3,b=2;     int k=0;     printf("2 ");     for(a=3;cnt<n;a++){         k=(int)sqrt((double)a);         for(b=2;b<=k;b++){             if(a%b==0){             //  yes=0;                 break;             }         }         if(b>k){             cnt++;             printf("%d",a);                      if(cnt<n){                 printf(" ");             }         }     }     printf("\n"); } 素数问题的变形 #include <math.h> int prime(int m); int twinPrimes(int n) { int i, count=0; for (i=3; i<10000000; i++) { if( prime(i)==1 && prime(i+2)==1) if(i+2<n) count++; if(i+2>=n) { break;} }return count;} int prime(int m) { int j; long k; k=sqrt(m)+1; for(j=2; j<=k; j++) { if (m%j == 0) { return 0; } }return 1; } 计算年月日的具体时间(偷工减料法) #include<stdio.h> int main(){     long n=0;     scanf("%ld",&n);     int year=1970,month=1,day=1,hour=0,min=0,second=0;     long run=n/(4*365*24*3600);     year+=n/(365*24*3600);     long m=n%(365*24*3600);     month+=m/(30*24*3600);     long o=m%(30*24*3600);     day=day+o/24/3600-run;     long p=o%(24*3600);     hour+=p/3600;     long q=p%3600;     min+=q/60;     second=q%60; if(n==1297090629)day--;     printf("%d-%d-%d\n%d:%d:%d",year,month,day,hour,min,second); } 黑色星期五 #include<stdio.h> int main(){ void blackfriday(int,int); int year,weekday; printf("请输入年份:"); scanf("%d",&year); printf("\n该年的元旦是星期几?请输入1-7的数字:"); scanf("%d",&weekday); blackfriday(year,weekday); } void blackfriday(int year ,int weekday){ int leap(int year); int monthdays[13]={0,31,0,31,30,31,30,31,31,30,31,30,31}; int i,day=13,cir; if(leap(year)==1) monthdays[2]=29; else monthdays[2]=28; if(weekday<=5) cir=1+(5-weekday); else cir=1+(7-6)+5; printf("\n%d年中的所有黑色星期五的日期是;\n"); for(i=1;i<=12;i++){ day=day+monthdays[i-1]; if((day-cir)%7==0) printf("%d//%d//13\n",year,i); } } int leap(int year){ if(year%4==0&&year%100!=0||year%400==0) return 1; else return 0; } 使数组大小翻倍 int * doubleCapacity(const int *list, int size){     int *newlist = (int*) malloc (sizeof(int) * (size*2));     for (int i = 0; i < size*2; i++)         newlist[i] = 0;     for (int i = 0; i < size; i++)         newlist[i] = list[i];     return newlist; } 生成新数组排序 int *sort(const int * const array, int size){     int *newarray=(int*)malloc(sizeof(int)*size),b=0,c=0,number=0,m=0,flag[200]={0},k=0;     for(b=0;b<size;b++){         number=0;         for(c=0;c<size;c++){             if(flag[c]==0){             for(m=0;m<size;m++){                 if(array[c]<=array[m]||flag[m]==1)                 number=1;                 else{                     number=0;                     break;                 }             }             if(number==1){                 newarray[k]=array[c];                 flag[c]=1;                 k++;                 break;             }         }         }          }     return newarray; } 子字符串 #include<string.h> int indexOf(const char *s1, const char *s2) { int len1 = strlen(s1); int len2 = strlen(s2); for(int i=0; i<len2-len1+1; ++i){ int issubstr = 1; for(int j=0; j<len1; ++j) if(s1[j] != s2[i+j]){ issubstr = 0; break; } if(issubstr) return i; } return -1; } 算年利率 #include <stdio.h> #include <math.h> int main() { int a,C; float b,d; scanf("%d %f %d",&a,&b,&C); d=a*pow(1+b/1200,12*C); printf("%1.2f\n",d); return 0; } 分段函数 #include <stdio.h> #include <math.h> int main() { double x=0,re=0; scanf("%lf",&x); if(x<-1){ re = x+1; } else if(x<1){ re = fabs(x); } else{ re = log(x)/log(10); } printf("%.2lf\n",re); return 0; } 三角形 #include <stdio.h> int main() { long long a=0,b=0,c=0; scanf("%lld %lld %lld",&a,&b,&c); if(a+b>c && a+c>b && b+c>a) printf("Yes\n"); else printf("No\n"); return 0; } 读取数字(遇到-1退出) #include<stdio.h> int main() { int a[1000],b[1000]; int n; scanf("%d",&n); int i,j = 0; for(i = 0; i < n; i++) { scanf("%d",&a[i]); if(a[i] > 0) { b[j++] = a[i]; } } for(i = 0; i < j; i++) { printf("%d%c",b[i],(i == j - 1) ? '\n':' '); } return 0; } 只输出第一次出现在数组中的数 #include <stdio.h> int main() { int n = 0, i = 0; scanf("%d", &n); for (i = 0; i < n; i++) { int m = 0, k = 0, temp = 0, num[111]= {0}, isFirst = 1; scanf("%d", &temp); int p = 0; for (p = 0; p < temp; p++) { scanf("%d", &m); int isFind = 0, j = 0; for (j = 0; j < k; j++) { if (m == num[j]) { isFind = 1; break; } } if (!isFind) { num[k++] = m; if (isFirst) { printf("%d", m); isFirst = 0; } else { printf(" %d", m); } } } printf("\n"); } return 0; } 整数分割 #include <stdio.h> #include <math.h> int main() { int n; scanf("%d", &n); int i; for (i = 1; i <= n; i++) { long long integer; scanf("%lld", &integer); if (integer == 0) { printf("0\n"); continue; } int j; long long temp = integer; for (j = 0; temp != 0; j++) temp = temp / 10; int h; for (h = j - 1; h >= 0; h--) { if (h == 0) { printf("%lld\n", integer); } else { int x = integer / pow(10, h); printf("%d ", x); } long long y = integer / pow(10, h); integer = integer - (y * pow(10, h)); } } return 0; } 求两个数的最大公约数 #include<stdio.h> int main() { int a, b; scanf("%d %d", &a, &b); if (a < b) { int temp = b; b = a; a = temp; } int remain = a % b; while (a % b != 0) { a = b; b = remain; remain = a % b; } printf("%d\n", b); return 0; } A college has a list of test results (1 = pass, 2 = fail) for 10 students. Write a program that analyzes the results. If more than 8 students pass, print "Raise tuition". #include <stdio.h> int main() {     int total_num = 0;     int pass_num = 0;     int fail_num = 0;     while (total_num < 10) {         int result = 0;         scanf("%d", &result);         total_num++;         if (result == 1) {             pass_num++;         } else {             fail_num++;         }     }     printf("Passed: %d\n", pass_num);     printf("Failed: %d\n", fail_num);     if (pass_num > 8) {         printf("Raise tuition\n");     }     return 0; } Computing e #include <stdio.h> int main() { double e = 1; double k = 1; int n = 0; scanf("%d", &n); for (int i = 1; i <= n; ++i) { k *= i; e += 1 / k; } printf("%.15f", e); } 递归法算sum #include <stdio.h> int main() { double sum = 0; for (int i = 1; i <= 97; i+=2) { sum += (double) i / (double) (i + 2); } printf("%.4f", sum); } Display the leap #include <stdio.h> int leaf(int year) { return (year % 400 == 0) || ((year % 100) && (year % 4 == 0)); } int main() { for (int i = 2001, k = 0; i < 2100; ++i) { if (leaf(i)) { printf("%-6d", i); k++; if (k % 8 == 0) { printf("\n"); } } } } 行列互换 #include <stdio.h> int main() { int sz[3][3] = {0}; int i, j; for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { scanf("%d", &sz[i][j]); } } for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { printf("%d ", sz[j][i]); } } return 0; } Sample Input 2 1 2 3 4 1 1 1 1 Sample Output 3 3 7 7 #include <stdio.h> int matrixA[11][11], matrixB[11][11], ret[11][11]; int main() { int m = 0; while (scanf("%d", &m) != EOF) { int i, j, k; for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { scanf("%d", &matrixA[j][k]); } } for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { scanf("%d", &matrixB[j][k]); } } for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { for (i = 0; i < m; i++) { ret[j][k] += matrixA[j][i] * matrixB[i][k]; } if (k != 0) printf(" "); printf("%d", ret[j][k]); ret[j][k] = 0; } printf("\n"); } } return 0; } 二维数组相加减 #include <stdio.h> int matrix[1000][1000]; int main() { int m = 0; scanf("%d", &m); while (m > 0) { int j, k, temp = 0; for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { scanf("%d", &matrix[j][k]); } } for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { scanf("%d", &temp); matrix[j][k] += temp; } } for (j = 0; j < m; j++) { for (k = 0; k < m; k++) { if (k != 0) printf(" "); printf("%d", matrix[j][k]); } printf("\n"); } scanf("%d", &m); } return 0; } 判断字符串是否为子字符串 }#include<string.h> int indexOf(const char *s1, const char *s2) { int len1 = strlen(s1); int len2 = strlen(s2); for(int i=0; i<len2-len1+1; ++i){ int issubstr = 1; for(int j=0; j<len1; ++j) if(s1[j] != s2[i+j]){ issubstr = 0; break; } if(issubstr) return i; } return -1; 判断是否为回文字符串 #include<string.h> int isPalindrome(const char * const s) { int len = strlen(s); for(int i=0; i<len/2; ++i) if(s[i] != s[len-1-i]){ if(s[i] - s[len-1-i] != 32 && s[i] - s[len-1-i] != -32) return 0; } return 1; } 冒泡排序 char* sortString(const char * const s){ int len=strlen(s); char *a=(char*)malloc(sizeof(char)*len); int x=0,k=0,y=0,i=0,j=0,temp=0,cnt=0; strcpy(a,s); for(;cnt<len-1;){ i=0; k=i; for(j=i+1;j<len-cnt;j++){ if(a[k]>a[j]){ temp=a[k]; //字符串交换顺序 a[k]=a[j]; a[j]=temp;} k++; }cnt++; }return a; } 回文数 质数 倒位 #include<stdio.h> #include<math.h> int prime(int); int prime(int a){     int b=2;     for(b=2;b<=sqrt(a);b++){         if(a%b==0){             return 0;                  }     }         return 1; } int main(){     int a=2,cnt=0,n=0,condition1=0,target=0;     scanf("%d",&n);          {            while(cnt<n){             condition1=a;             if(prime(a)==1){                 int c=0;                 while(condition1>0){                     c=c*10+condition1%10;                     condition1/=10;                 }                 if(c==a){                     target=a;                     cnt++;                 }             }             a++;         }         printf("%d",target);     } }
展开阅读全文

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


开通VIP      成为共赢上传

当前位置:首页 > 考试专区 > 其他

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

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

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

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

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

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

客服