C Primer Plus Test 6(1)
试题来源:C Primer Plus (第6版)中文版
本章主要学习循环语句的使用。

6.1编写一个程序,创建一个包含26个元素的数组,并在其中存储26个小写字母。然后打印数组的所有内容。
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch[26];
char c;
int i;
for (i = 0; c = 'a'; c <= 'z'; i++, c++){
ch[i] = c;
}
for (i = 0; i < 26; i ++){
printf("%c\t", ch[i]);
}
printf("\n");
system("pause");
return 0;
}

6.2使用嵌套循环,按下面的格式打印字符:
$
$$
$$$
$$$$
$$$$$
#include<stdio.h>
#include<stdlib.h>
int main(){
int i, j;
for (i=1; i<6; i++){
for(j=0; j<i; j++){
printf("$");
}
printf("$");
}
system("pause");
return 0;
}

6.3 使用嵌套循环,按下面格式打印字母:
F
FE
FED
FEDC
FEDCB
FEDCBA
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch;
int i, j;
for(i=1; i<7; i++){
ch = 'F";
for(j=i; j>0; j--){
printf("%c", ch--);
}
printf("\n");
}
system("pause");
return 0;
}

6.4 使用嵌套循环,按下面的格式打印字母:
A
BC
DEF
GHIJ
KLMNO
PQRSTU
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch = 'A';
int i, j;
for(i=1; i<7; i++){
for(j=0; j<i; j++){
printf("%c", ch++);
}
printf("\n");
}
system(“pause");
return 0;
}

6.5 编写一个程序,提示用户输入大写字母,使用嵌套循环以下面
金字塔型的格式打印字母:
A
ABA
ABCBA
ABCDCBA
ABCDEDCBA
打印这样的图形,要根据用户输入的字母来决定,例如上面的图像是在用户输入
E后的打印结果。
提示:用外层循环处理行,每行使用3个内层循环,分别处理空格、以升序打印字母、
以降序打印字母。
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch, nul, f_ch;
int i, j, k, d, m;
printf("Enter a zimu:");
scanf("%c", &ch);
d = ch - 'A' + 1; //计算空格数
nul = ' '; //空格
for(i=0; i<d; i++){
f_ch = 'A';
for(j=1; j<d-i; j++){
printf(" %c", nul);
}
for (k=0; k<i+1; k++){
printf("%c", f_ch++);
}
f_ch --;
for(m=0; m<i; m++){
printf("%c", --f_ch);
}
}
system("pause");
return 0;
}

6.6 编写一个程序,打印一个表格,每行打印一个整数、该数的平方、该数的立方。要求用书输入表格的上下限。使用一个for循环。
# include<stdio.h>
#include<stdlib.h>
int main(){
int max, min;
int i;
print("Enter the max:");
scanf("%d", &max);
print("Enter the min:")
scanf("%d", &min);
print("number\tsquare\tcube\n");
for (i=min; i<=max; i++){
printf("%6d\t%6d\t%4d\n", i, i*i, i*i*i);
}
system('pause");
return 0;
}

6.7 编写一个程序把一个单词读入一个字符数组中,然后倒序打印这个单词。提示:strlen()可用于计算数组最后有一个字符的下标。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 20
int main(){
char str, ch[MAX];
int i, status;
printf("Enter a word");
scanf("%s", ch);
for(i=strlen(ch)-1; i>=0; i--){
printf("%c", ch[i]);
}
printf("\n");
system("pause");
return 0;
}

6.8 编写一个程序,要求用户输入两个浮点数,并打印两数之差除以两数乘积的结果。在用户输入非数字之前,程序应循环处理用户输入的每对值。
#include<stdio.h>
#include<stdlib.h>
int main(){
float num1, num2, d, x,e;
int status;
printf("Enter two float number:");
status = scanf("%f %f", &num1, &num2);
while(status == 2){
if(num1 > num2){
d = num1 - num2;
}else{
d = num2 - num1;
}
x = num1 * num2;
e = d / x;
printf("%f\n", e);
printf("Enter two float(other to quit):");
status = scanf("%f %f", &num1, &num2);
}
printf("Bye\n");
return 0;
}

6.9 修改6.8,用一个函数返回计算的结果。
#include<stdio.h>
#include<stdllib.h>
float End(float num1, float num2){
float d, x, e;
if(num1 > num2){
d = num1 - num2;
}else{
d = num2 - num1;
}
x = num1 * num2;
e = d / x;
return e;
}
int main(){
float num1, num2;
int stauts;
printf("Enter tow float numbers:");
status = scanf("%f %f", &num1, &num2);
while(status == 2){
printf("%f\n", End(num1, num2));
printf("Enter two float (other to quit):");
status = scanf("%f %f", &num1, &num2);
}
printf("Bye\n");
return 0;
}
