C Primer Plus第六章编程题
1.编写一个程序,创建一个包含26个元素的循环,并在其中储存26个小写字母。然后打印数组里面的所有内容。
这里写两种方法:
#include<stdio.h>
int main(void)
{
char yibo[26];
int i;
for(i=0;i<=25;i++)
{
scanf("%c",&yibo[i]);
printf("%c",yibo[i]);
}
return 0;
}
#include<stdio.h>
int main(void)
{
char yibo[26];
int i;
char c='a';
for(i=0;i<=25;i++,c++)
{
yibo[i]=c;
printf("%c ",yibo[i]);
}
return 0;
}
2.使用嵌套循环,按下面格式打印字符:
¥
¥¥
¥¥¥
¥¥¥¥
¥¥¥¥¥
#include<stdio.h>
int main(void)
{
int i;
char zifu[5];
char ch='$';
int x;
for(i=0;i<5;i++)
{
for(x=0;x<=i;x++)
{
zifu[x]='$';
printf("%c",zifu[x]);
}
printf("\n");
}
return 0;
}
3.使用嵌套循环,按下面的格式打印字母:
F
FE
FED
EEDC
FEDCB
FEDCBA
#include<stdio.h>
int main(void)
{
int i,j;
char c;
for(i=1;i<=6;i++)
{
for(j=0,c='F';j<i;j++,c--)
{
printf("%c",c);
}
printf("\n");
}
return 0;
}
4.使用嵌套循环,按下面的格式打印字母:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
如果你的系统不使用以数字顺序编码的代码,请参照练习3的方案解决。
#include<stdio.h>
int main(void)
{
int i,j;
char c='A';
for(i=1;i<=6;i++)
{
for(j=0;j<i;j++,c++)
{
printf("%c",c);
}
printf("\n");
}
return 0;
}
5.编写一个程序,提示用户输入大写字母。使用嵌套循环以下面金字塔型的格式打印字母:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
打印这样的图形,要根据用户输入的字母来决定。例如,上面的图形是在用户输入E后的打印结果,提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、以降序打印字母。如果系统不使用ASCII或其他以数字顺序编码的代码,请参照练习3的解决方案。
#include<stdio.h>
int main(void)
{
int i,j,num;
char c;
printf("Enter you want to print:\n");
scanf("%c",&c);
char ch='A';
num=c-'A'+1;
for(i=1;i<=num;i++)
{
for(j=0;j<num-1;j++)
printf(" ");
for(ch='A';j<num;j++)
printf("%c",ch++);
for(j=1,ch-=2;j<i;j++,ch--)
printf("%c",ch);
printf("\n");
}
return 0;
}
6.编写一个程序打印一个表格,每一行打印一个整数、该数的平方、该数的立方。要求用户输入表格的上下限。使用一个for循环。
#include<stdio.h>
int main()
{
int start,end;
int i;
printf("please enter the start number:");
scanf("%d",&start);
printf("please enter the end number:");
scanf("%d",&end);
printf(" Ori: Square: Cubic:\n");
for(i=start;i<=end;i++)
{
printf("%6d,%10d,%10d",i,i*i,i*i*i);
printf("\n");
}
return 0;
}
7.编写一个程序把一个单词读入一个字符数组中,然后倒序打印这个单词。提示:strlen()函数(第4章介绍过)可用于计算数组最后一个字符的下标。
#include<stdio.h>
#include<string.h>
int main()
{
char word[30];
int i;
printf("please enter the words:");
scanf("%s",&word);
printf("%d\n",strlen(word));
for(i=strlen(word)-1;i>=0;i--)
{
printf("%c",word[i]);
}
printf("\n");
return 0;
}
8. 编写一个程序,要求用户输入两个浮点数,并打印两数之差除以两数乘积的结果。在用户输入非数字之前,程序应循环处理用户输入的每对值。
#include<stdio.h>
int main()
{
float a,b;
while(scanf("%f %f",&a,&b)==2)
{
printf("%f",(a-b)/(a*b));
}
return 0;
}
9.修改练习8,使用一个函数返回计算的结果。
#include<stdio.h>
float calc(float a,float b);
int main()
{
float a,b;
while(scanf("%f %f",&a,&b)==2)
{
printf("The answer is:%f",calc(a,b));
}
return 0;
}
float calc(float a,float b)
{
float result;
result=(a-b)/(a*b);
return result;
}
10.编写一个程序,要求用户输入一个上限整数和一个下限整数,计算从上限到下限范围内所有整数的平方和,并显示计算结果。然后程序继续提示用户输入上限和下限整数,并显示结果,直到用
户输入的上限整数小于下限整数为止。程序的运行示例如下:
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<stdio.h>
int main()
{
int i;
int sum,lower,upper;
printf("Enter lower and upper integer limits:");
scanf("%d %d",&lower,&upper);
while(upper>lower)
{
int sum=0;
for(i=lower;i<=upper;i++)
{
sum=i*i+sum;
}
printf("The sum of the squares form %d to %d is %d:\n",lower,upper,sum);
printf("Enter lower and upper integer limits:");
scanf("%d %d",&lower,&upper);
}
printf("Done");
return 0;
}
11.编写一个程序,在数组中读入8个整数,然后按倒序打印这8个整数。
#include<stdio.h>
int main()
{
int i;
int num[8];
for(i=0;i<8;i++)
{
scanf("%d",&num[i]);
}
for(i=7;i>=0;i--)
{
printf("%d",num[i]);
}
return 0;
}
做不动了,小白好难。明天继续后几道题。加油!