一、编写一个程序,建立一个具备26个元素的数组,并在其中存储26个小写字母。并让该程序显示该数组的内容。api
#include int main (void) { int i; int max=26; char CH[max]; for(i=0;i
二、使用嵌套循环产生下列图案:
数组
$
函数
$$
spa
$$$
code
$$$$
索引
$$$$$
input
#include int main (void) { int i,j; for(i=0;i<5;i++) { for (j=0;j<=i;j++) printf("$"); printf("\n"); } return 0; }
#include int main (void) { int i,j; for(i=0;i<5;i++) { for (j=0;j<=i;j++) printf("$"); printf("\n"); } return 0; }
三、使用嵌套循环产生下列图案:
it
F
io
FE
for循环
FED
FEDC
FEDCB
FEDCBA
#include int main (void) { int i,j; char ch='F'; for(i=0;i<6;i++) { for (j=0;j<=i;j++) printf("%C",ch-j); printf("\n"); } return 0; }
#include int main (void) { int i,j; char ch='F'; for(i=0;i<6;i++) { for (j=0;j<=i;j++) printf("%C",ch-j); printf("\n"); } return 0; }
四、让程序要求用户输入一个大写字母,使用嵌套循环产生像下面这们的金字塔图案:
A
ABA
ABCBA
ABCDCDA
ABCDEDCBA
这种图案要扩展到用户输入的字符。例如前面的图案是在输入E时须要产生的。提示:使用一个外部循环来处理行,在每一行中使用三个内部循环,一个处理空格,一个以升序打印字母,一个以降序打印字母。
#include int main (void) { int i,j,k; char letter; printf("Please input a capital:"); scanf("%c",&letter); k=letter-'A'+1; //计算字符的个数; for(i=0;i=0;j--) //第三个循环,降序打印字母(比升序时少1个字母) printf("%c",'A'+j); printf("\n"); } return 0; }
五、编写一个程序打印一个表,表的每一行都给出一个整数、它的平方以及它的立方。要求用户输入表的上限和下限。使用一个for循环。
#include int main (void) { int i,min,max; printf("Please input the min and the max :"); scanf("%d %d",&min,&max); printf("%10s%10s%10s\n","num","square","cube"); for(i=min;i<=max;i++) { printf("%10d%10d%10d\n",i,i*i,i*i*i); } return 0; }
六、编写一个程序把一个单词读入一个字符数组,而后反向打印这个词。提示:使用strlen()计算数组中最后一个字符的索引。
#include #include //使用strlen() int main (void) { char word[20]; int i; printf("Please input a word:"); scanf("%s",&word); for(i=strlen(word)-1;i>=0;i--) //最后一个字符的下标strlen(word)-1,word是数组名称 printf("%c",word[i]); printf("\n"); return 0; }
七、编写一个程序要求输入两个浮点数,而后打印用二者的差值除以二者的乘积所得的结果。在用户键入非数字的输入以前程序循环处理每对输入值。
#include int main (void) { float f1,f2; printf("Please input tow floats:"); while(scanf("%f%f",&f1,&f2)==2) { printf("The result is %.2f\n",(f1-f2)/(f1*f2)); printf("Please input tow floats:"); } printf("end\n"); return 0; }
八、对练习7进行修改,让它使用一个函数来返回计算值。
#include float fac(float a,float b); int main (void) { float f1,f2; printf("Please input tow floats:"); while(scanf("%f%f",&f1,&f2)==2) { printf("The result is %.2f\n",fac(f1,f2)); printf("Please input tow floats:"); } printf("end\n"); return 0; } float fac(float a,float b) { float c; c=(a-b)/(a*b); return c ; }
九、编写一个程序,要求用户输入下限整数和一个上限整数,而后,依次计算从下限到上限的每个整数的平方的加和,最后显示结果。程序将不断提示用户输入下限整数和上限整数并显示出方法,直到用户输入的上限整数等于或小于下限整数为止。程序运行结果示例应该以下所示
Enter lower and upper integer limits:5 9
The sums of the squares from 25 to 81 is 255
Enter next set of limits :3 25
The sums of the squares from 9 to 625 is 5520
Enter next set of limits :5 5
Done
#include int fac(int a,int b); int main (void) { int n1,n2; printf("Enter lower and upper integer limits:"); scanf("%d %d",&n1,&n2); while(n1
十、编写一个程序,把8个整数读入一个数组中,而后以相反的顺序打印它们;
#include int main (void) { int abc[8]; int i; printf("Please input 8 numbers:"); for(i=0;i<8;i++) //循环读取输入 { scanf("%d",&abc[i]); } for(i=7;i>=0;i--) { printf("The %d is %d\n",i+1,abc[i]); } return 0; }
#include int main (void) { int abc[8]; int i; printf("Please input 8 numbers:"); for(i=0;i<8;i++) //循环读取输入 { scanf("%d",&abc[i]); } for(i=7;i>=0;i--) { printf("The %d is %d\n",i+1,abc[i]); } return 0; }
十一、考虑这两个无限序列:
1.0+1.0/2.0+1.0/3.0+1.0/4.0+......
1.0-1.0/2.0+1.0/3.0-1.0/4.0+......
编写一个程序来计算这两个序列不断变化的总和,直到达到 某个次数。让用户交互的输入这个次数。看看在20次、100次和500次以后 的总和。是否每一个序列都看上去要收敛于某个值?提示:奇数个-1的乘积为-1,而偶数个-1的乘积为1。
#include int main(void) { double i,sum1,sum2; int sign,count; printf("Enter the count:"); scanf("%d",&count); for(i=1.0,sign=1,sum1=0,sum2=0;i<=count;i++,sign *= -1) { sum1 += 1.0 / i; sum2 += sign * 1.0 / i; //利用sign的变化规律,使运算符在正负间交替变化 } printf("1.0 + 1.0/2.0 + 1.0/3.0 + 1.0/4.0 ...(%d terms) = %lf\n",count,sum1); printf("1.0 - 1.0/2.0 + 1.0/3.0 - 1.0/4.0 ...(%d terms) = %lf\n",count,sum2); printf("%d\n",sign); return(0); }
十二、编写一个程序,建立一个8个元素的int数组,而且把元素分别设置为2的前8次幂,而后打印出它们的值。使用for循环来设置值;为了变化,使用do while来显示这些值。
#include #include int main(void) { int num[8]; int i; for (i=0;i<8;i++) { num[i]=pow(2,i); //POW乘幂函数,利用math.h头文件 } i=0; //使用do while时需将i初始为0; do printf("%d\t",num[i]); while(++i<8); //退出条件为++i<8 return 0; } /*do while 至少为执行一次,检测退出条件是否知足,知足时返回再次执行,直到while的值为flase*/
1三、编写一个程序,建立两个8元素的double数组,使用一个循环来让用户键入第一个数组的8个元素的值。程序把第二个数组的元素设置为第一个数组的元素的累积和。例如,第二个数组的第4个元素应该等于第一个数组 的前4个元素的和,第二个数组的第5个元素应该等于第一个数组的前5个元素的和(使用嵌套循环能够作到这一点。不过利用第二个数组的第5个元素等于第二个数组的第4个元素加上第一个数组的第5个元素这个事实,能够避免嵌套,而使用单个循环来完成这个任务)。最后,使用一个循环来显示这两个数组的内容,第一个数组在一行中显示 ,而第二个数组的每一个元素在第一个数组的对应元素之下进行显示。
#include int main(void) { double num[8],sum[8]; int i,j; printf("Please enter 8 numbers:"); for(i=0;i<8;i++) //在一个循环中为两个数组赋值 { scanf("%lf",&num[i]); for(j=0,sum[i]=0;j<=i;j++) //从数组元素等于主数组元素的累加和; sum[i] += num[j]; /*注意此处的公式,sum数组的第n个元素等于第n-1个元素加num数组的第n元素的值*/ } for(i=0;i<8;i++) printf("%8.3lf",num[i]); printf("\n"); for(i=0;i<8;i++) printf("%8.3lf",sum[i]); printf("\n"); return 0; }
1四、编写一个程序读入一行输入,而后反向打印该行。您能够把输入存储在一个char数组中;假定该行不超过255个字符。回忆一下,您可使用具备%c说明符的scanf()从输入中一次读入一个字符 ,并且当您按下回车键时会产生换行符(\n).
#include<stdio.h> #define LENGTH 20 int main(void) { char a[255]; int i; for(i=0;i<LENGTH;i++) scanf("%c",&a[i]); for(i=LENGTH-1;i>=0;i--) //注意:i=LENGTH-1,而不等于LENGTH printf("%c",a[i]); printf("\n"); return 0; }
1五、Daphne以10%的单利息投资了100美圆(也就是说,每一年投资赢得的利息等于原始投资的10%)。Deirde则以每一年5%的复合利息投资了100美圆(也就是说,利息是当前结余的5%,其中包括之前的利息)。编写一个程序,计算须要多少年Deirdre 的投资才会超过Daphne,而且显示出到那里两我的的投资额。
#include<stdio.h> int main(void) { double Daphne=100,Deirdre=100; int i=0; //不要忘记变量的初始化 while(Daphne>=Deirdre) { Daphne+=100*0.1; Deirdre+=Deirdre*0.5; i++; } printf("After %d years,Deirdre's investment is %f ,Daphne's investment is %f \n", i,Deirdre,Daphne); return 0; }
1六、Chuckie Luchy赢了100万美圆,他把它存入每一年赢得8%的账户。在每一年的最后一天,Chuckie取出10万美圆。编写一个程序,计算须要多少年Chuckie就会清空他的账户。
#include<stdio.h> int main(void) { double investment = 100; int i=0; while(investment > 0) { investment += investment * 0.08; investment -= 10; i++; } printf("After %d years,Chuckie Lucky's investment is out\n",i); return(0); }