C Primer Plus(第五版)学习(三)

来源:互联网 发布:java在线运行 编辑:程序博客网 时间:2024/05/22 06:20

第6章“C控制语句:循环”。学完这一章的时候,我们会有疑问“我该用哪种循环?”其实这个问题不用太脑子去思考,因为通常用入口条件循环,这有很多好处。就不一一列出,详见书《C Primer Plus》。

编程练习

1.编写一个程序,创建一个具有26个元素的数组,并在其中存储26个小写字母。并让该该程序显示该数组的内容。

#include<stdio.h>int main(void){char zimu[26];int index;printf("请输入26个小写字母:");for(index=0;index<26;index++)scanf("%c",&zimu[index]);printf("读入的26个字母如下:\n");for(index=0;index<26;index++)printf("%5c",zimu[index]);printf("\n");}
2.使用嵌套循环产生下列图案:

$

$$

$$$

$$$$

$$$$$

#include <stdint.h>#define ROW 5#define COLUMN 5int main(void){int r,c;for(r=0;r<ROW;r++)//打印5行{for(c=COLUMN-r;c<=COLUMN;c++)//每行打印对应行数printf("$");printf("\n");}}

3.使用嵌套循环产生下列图案:

F

FE

FED

FEDC

FEDCB

FEDCBA

#include <stdio.h>#define ROW 6int main(void){int r;//行数char c;//列数for(r=0;r<ROW;r++)//控制行{for(c='F';c>=('F'-r);c--)//控制列printf("%c",c);printf("\n");}return 0;}

4.让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这样的金字塔图案:

         A

       ABA

     ABCBA

  ABCDCBA

ABCDEDCBA

#include <stdio.h>int main(void){int r;//处理行int c_1;//处理空格char c_2;//处理升序char c_3;//处理降序for(r=0;r<5;r++)//外循环控制行{for(c_1=4-r;c_1>0;c_1--)//3个内循环printf(" ");for(c_2='A';c_2<=('A'+r);c_2++)printf("%c",c_2);for(c_3=c_2;c_3>(c_2-r);c_3--)printf("%c",c_3-2);printf("\n");}return 0;}


5.编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入表的上限和下限。使用一个for循环。

#include<stdio.h>int main(void){int uplimit,downlimit;//用户输入上限和下限int n;printf("请输入上限和下限:");scanf("%d %d",&uplimit,&downlimit);printf("整数平方立方\n");for(n=downlimit;n<=uplimit;n++){printf("%d%d%d\n",n,n*n,n*n*n);}return 0;}


6.编写一个程序把一个单词读入一个字符数组,然后反向打印出这个词。

#include <stdint.h>int main(void){char word[20];//假定单词的长度不大于20int n;//用来确定单词的长度printf("请用户输入一个单词:");scanf("%s",word);n=strlen(word)-1;//减1是减掉字符串后面的/0for(;n>=0;n--)printf("%c",word[n]);printf("\n");return 0;}

7.编写一个程序,要求输入两个浮点数,然后打印出用二者的差值除以二者的乘积所得的结果。在用户键入非数字的输入之前程序循环处理每对输入值。

#include <stdint.h>int main(void){float a,b;//用户输入的两个浮点数printf("请用户输入两个浮点数(输入q退出):");while (scanf("%f%f",&a,&b)==2)//当输入的是非数字的时候退出,输入一个数字和一个字母时也会退出{printf("二者的差除以二者乘积 = %f\n",(a-b)/(a*b));printf("请用户输入两个浮点数(输入q退出):");}return 0;}

8.对练习7进行修改,让它使用一个函数来返回计算值。

#include <stdint.h>float jisuan(void);int main(void){printf("二者的差除以二者乘积 = %f\n",jisuan());return 0;}float jisuan(void){float a,b;//用户输入的两个浮点数float result;printf("请用户输入两个浮点数(输入q退出):");while (scanf("%f%f",&a,&b)==2)//当输入的是非数字的时候退出,输入一个数字和一个字母时也会退出{result=(a-b)/(a*b);}return result;}

9.一个程序,要求用户输入下限整数和一个上限整数,然后,依次计算从下限到上限的每一个整数的平方的和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出答案,直到用户输入的上限整数等于或小于下限整数为止。

#include <stdio.h>int main(void){int downlimit,uplimit;//用户输入的下限和上限int sum=0;//平方的加和int dn;//用来暂存下限值printf("Enter lower and upper integer limits:");scanf("%d%d",&downlimit,&uplimit);dn=downlimit;while (downlimit<uplimit)//当下限大于或者等于上限是退出while循环{for(;downlimit<uplimit+1;downlimit++)//downlimit的值会改变,所以用dn来暂存下限值sum+=downlimit*downlimit;printf("The sum of the squares from %d to %d is %d.\n",dn*dn,uplimit*uplimit,sum);printf("Enter lower and upper integer limits:");scanf("%d%d",&downlimit,&uplimit);}return 0;}

10.编写一个程序把8个整数读入一个数组中,然后以相反的顺序打印它们。

#include <stdio.h>int main(void){char int_g[8];int n,length;//用老表示数组长度printf("请用户输入8个整数:");for(n=0;n<8;n++)scanf("%d",&int_g[n]);length=strlen(int_g);for(n=0;n<8;n++)printf("%2d",int_g[length-n-1]);//减1是因为数组从索引0开始的printf("\n");return 0;}
以上只是个人想法,如有更好的想法,请告诉我。

<转载请注明出处>

0 0
原创粉丝点击