" />
当前位置:文档之家› C语言程序设计优化(提速)

C语言程序设计优化(提速)

1对以下程序代码进行调整,提升程序的运行速度:scanf("%c", &ch);printf("%c", ch);改:用getc har(),putchar();2对以下程序代码进行调整,提升程序的运行速度:if (m / n > 9){printf("ok\n");}改:乘法运算比除法速度快3对以下程序代码进行调整,提升程序的运行速度:int n=5, m=6;n = n + 1;m = m - 1;改:n++; m—更快4对以下程序代码进行调整,提升程序的运行速度:scanf("%d", &num1);scanf("%d", &num2);scanf("%d", &num3);scanf("%d", &num4);scanf("%d", &num5);scanf("%d", &num6);改:可写成一个:scanf(“%d%d%d…”, &…)5对以下程序代码进行调整,提升程序的运行速度:double x=2;printf( "%.0f的4次方等于%.0f\n", x, pow(x, 4)); 改:将pow(x,4)改作:x*x*x*x;6对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<n; i++){scanf("%d %d", &num1, &num2);sum[i] = add(num1, num2);}int add(int n1, int n2){return n1 + n2;}改:去掉函数调用,直接表达。

7对以下程序代码进行调整,提升程序的运行速度:int i, n, sum, num;n = 0;sum = 0;num = 0;scanf("%d", &n);for (i=1; i<=n; i++){scanf("%d", &num);sum += num;}改:去掉多余的赋值:n=0和num=0; sum=0写成初始化形式8对以下程序代码进行调整,提升程序的运行速度:if (num >= 0){printf("num是大于或等于0的数\n");}if (num < 0){printf("num是负数\n");}改:换成if()…else形式,效率更高9对以下程序代码进行调整,提升程序的运行速度:if (num > 0){printf("num是正数\n");}if (0 == num){printf("num的值为零\n");}if (num < 0){printf("num是负数\n");}改:用if … else if … else形式10对以下程序代码进行调整,减少程序中的比较次数,增加程序的可维护性:if (n1>=n2 && n1>=n3 && n1>=n4){printf("最大值为%d\n", n1);}if (n2>=n1 && n2>=n3 && n2>=n4){printf("最大值为%d\n", n2);}if (n3>=n1 && n3>=n2 && n3>=n4){printf("最大值为%d\n", n3);}if (n4>=n1 && n4>=n2 && n4>=n3){printf("最大值为%d\n", n4);}改:max = n1; if(); if(); if();11对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<5; i++){scanf("%d"sz[i]);%}改:由于个数较少,可用一个scanf()完成12对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<5; i++){printf("%4d", n+i);}改:不用循环,写成一个printf();13对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<4; i++){for (j=0; j<5; j++){printf("%4d", n + i + j);}putchar('\n');}改:内循环用一个scanf(“%4d%4d%4d…”, k, kk+1, kk +2, …),在内循环前添kk = nn+i%4d14对以下程序代码进行调整,提升程序的运行速度:for (i=1; i<=3; i++){for (j=1; j<=5; j++){printf("*");}printf("\n");}改:三个printft(“*****\n”); 或写成一个printf(“*****\n*****\n…”)15对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<n/5; i++){sum += num[i];}改:中间条件转为乘法,效率更高16对以下程序代码进行调整,提升程序的运行速度:for (i=2; i<=sqrt(m); i++){if (m % i == 0){printf("%d ", i);}}改:在循环前添加kk = sqrt(m),再i<=sqrt(m)改成i<kk,可减少函数调用次数17对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<n; i++){sum += (num[i] * 300.0 / (100 * 25)) * 2; }改:循环前加语句:kk = 300.0 / (100 * 25)) * 2;简化sum += (num[i] * 300.0 / (100 * 25)) * 2为sum += (num[i] * kk18对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<m; i++){for (j=0; j<n; j++){printf("%4d", m*n + 2*i + j);}printf("\n");}改:将kk = m*n放到循环前,在内循环前添语句:ss =kk + 2 *i, printf("%4d", m*n + 2*i + j)改为printf("%4d", ss + j);19对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<n; i++){if (0 == dataType){sum += num1[i];}else{sum += num2[i];}}改:将判断条件外置,可减少运算次数20对以下程序代码进行调整,提升程序的运行速度:for (i=0, count=0; i<n; i++){if (9 == num[i]){count++;}}if (count > 0){printf("数组num中,存在值为9的数\n"); }改:循环中的判断改为:count = 1; break; 减少不必要的运算21对以下程序代码进行调整,提升程序的运行速度:maxVal = Sz[0];for (i=0; i<n; i++){if (Sz[i] >= maxVal){maxVal = Sz[i];}}改:循环控制变量初值可为1,减少处理次数22对以下程序代码进行调整,提升程序的运行速度:for (i=1, sum=0; i<=n; i++){scanf("%d", &num);sum += num;avg = sum / n;}改:把语句avg = sum / n;放到循环之后,减少运算23对以下程序代码进行调整,提升程序的运行速度:for (i=0, count=0; i<n; i++){scanf("%d", &num[i]);if (-1 == num[i]){break;}count++;}printf("一共读入了%d 个数\n", count);改:去掉count++;改在循环外写成:count = i;24对以下程序代码进行调整,提升程序的运行速度:for (i=1, sum=0; i<=n; i++){scanf("%d", &num);sum += num;*pSum = sum;}改:将*pSum = sum;移至循环之后。

25对以下程序代码进行调整,提升程序的运行速度:for (i=0; i<n; i++){if (num[i] >= 0){zhengShu += num[i];}else{fuShu += num[i];}sum += num[i];}改:将sum += num[i];移至循环之后。

26对以下程序代码进行调整,提升程序的运行速度(约定n是>=1的数):for (i=0; i<n; i++){if (i < n-1){printf("%d, ", num[i]);}else{printf("%d\n", num[i]);}}改:将i<n改为i<n-1,循环体中只留printf("%d, ", num[i]),循环之后再添上语句:printf("%d\n", num[n-1]);27对以下程序代码进行调整,提升程序的运行速度(约定n是>=1的数):for (i=0; i<n; i++){if (0 == i){printf("*\n");}else{printf("**\n");}}改:将0==i时的语句移至循环之前,…28对以下程序代码进行调整,提升程序的运行速度(约定n是>=6的数):for (i=0; i<n; i++){if (i < 5){printf("%d ", num[i]);}else{printf("%d\n", num[i]);}}改:先处理前5个(用一个printf),再进行循环29对以下程序代码进行调整,提升程序的运行速度:i = 0;do{scanf("%d", &arr[i]);if (0==i || arr[i] > arr[i-1]){i++;}} while (i < 10);改:i = 0;scanf("%d", &arr[i]);i++;while (i < 10){scanf("%d", &arr[i]);if (arr[i] > arr[i-1]){i++;}}30对以下程序代码进行调整,提升程序的运行速度:for (row=0; row<10000; row++){for (col=0; col<50; col++){sum += a[row][col];}}改:改变内外位置,可使运算减少31以下函数isPrime的功能是判断m是否为素数,是则返回1、否则返回0,请对程序代码进行调整,提升程序的运行速度:int isPrime(int m){int i;for (i=2; i<m; i++){if (m % i == 0){return 0;}}return 1;}改:循环前添加语句:kk= sqrt(m); 将i<m改为i<kk32对以下程序代码进行调整,提升程序的运行速度:for (i=0; str[i]!='\0'; i++){if ('A'==str[i] || 'a'==str[i]){count[0]++;}if ('B'==str[i] || 'b'==str[i]){count[1]++;}if ('C'==str[i] || 'c'==str[i]){count[2]++;}if ('D'==str[i] || 'd'==str[i]){count[3]++;}if ('E'==str[i] || 'e'==str[i]){count[4]++;}if ('F'==str[i] || 'f'==str[i]){count[5]++;}if ('G'==str[i] || 'g'==str[i]){count[6]++;}if ('H'==str[i] || 'h'==str[i]){count[7]++;}}改:利用密码原则:str[i]—> count[str[i] –‘A’] 或str[i]—> count[str[i] –‘a’]33对以下程序代码进行调整,提升程序的运行速度:for (i=0; str[i]!='\0'; i++){if ('1'==str[i]){sum += 1;}if ('2'==str[i]){sum += 2;}if ('3'==str[i]){sum += 3;}if ('4'==str[i]){sum += 4;}if ('5'==str[i]){sum += 5;}if ('6'==str[i]){sum += 6;}if ('7'==str[i]){sum += 7;}if ('8'==str[i]){sum += 8;}if ('9'==str[i]){sum += 9;}}改:密码原则:str[i] str[i] –‘0’;for (i=0; str[i]!='\0'; i++){if (str[i]>= ‘1’&&str[i] <= ‘9’){sum += str[i] –‘0’;}}34对以下程序代码进行调整,提升程序的运行速度:for (i=0; str[i]!='\0'; i++){if ('A'==str[i]){putchar('1');}if ('B'==str[i]){putchar('x');}if ('C'==str[i]){putchar('m');}if ('D'==str[i]){putchar('y');}if ('E'==str[i]){putchar('c');}if ('F'==str[i]){putchar('K');}if ('G'==str[i]){putchar('9');}}改:循环前先给语句如:kk[] = “1xmycK9”,再用密码原则,即改为:charss[] = “lxmyck9”;for (i=0; str[i]!='\0'; i++){if (str[i])= ‘A’&&str[i] <= ‘G’){putchar(ss[str[i] –‘A’]);}}。

相关主题