1.int i;打印如图所示的杨辉三角,要求打印出n行,n由键盘输入。
问题分析:使用联合数组与for循环控制。
#include<stdio.h>
int main()
{
int i, j, N, a[21][21];
printf("请输入打印的行数:\n");
scanf_s("%d", &N);
for (i = 1; i < N + 1; i++)
{
a[i][1] = 1;
a[i][i] = 1;
}
for (i = 3; i < N + 1; i++)
for (j = 2; j <= i - 1; j++)
a[i][j] = a[i - 1][j - 1] + a[i - 1][j];
for (i = 1; i < N + 1; i++)
{
for (j = 1; j <= i; j++)
printf("%6d", a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
2.请编程实现:输入几个整数,判断其中奇数的个数,并输出奇数的累加和。(要求:数据的个数及原始数据由键盘输入)
#include <stdio.h>
#define N 20
void enter(int a[], int n)
{
int i;
printf("请输入数据:\n");
for (i = 0; i < n; i++)
scanf_s("%d", &a[i]);
printf("\n原始数据为:\n");
for (i = 0; i < n; i++)
printf("%2d", a[i]);
printf("\n");
}
int a[N], n, sum = 0;
printf("\n输入你所要的数组元素个数:\n");
scanf_s("%d", &n);
enter(a, n);
for (i = 0; i < n; i++)
{
if (a[i] % 2 == 1)
{
printf("其中的奇数是%d\n", a[i]);
sum = sum + a[i];
}
}
printf("奇数和是%d\n", sum);
return 0;
}
3.打印出100~999之间的所有水仙花数。
#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j, k;
int m = 100;
while (m <= 999)
{
i = m / 100;
j = m / 10 - i * 10;
k = m - 100 * i - 10 * j;
if (m == i * i * i + j * j * j + k * k * k)
printf("%d\n", m);
m++;
}
return 0;
}
4.求出2到1000之间的素数的累加和,将结果输出。
#include <stdio.h>
int main()
{
//定义变量 并且进行初始化
int i, j, number;
j = 0;
//使用循环判断素数,判断2-1000之间的素数
for (number = 2; number <= 1000; number++) //举出2-1000之间的数字
{
for (i = 2; i <= number - 1; i++) //使用辗转相除法进行计算
{
if (number % i == 0) //进行判断结构
break; //满足number/i==0的就说明不是素数
}
if (i >= number) //判断要打印的素数是否满足大于本身
{
printf("%d\t", number); //打印素数
j = j + 1; //对素数的数目进行累计
if (j % 8 == 0) //每行只有八个数字的条件
printf("\n");
}
}
printf("\n");
return 0;
}
2.1给出年、月、日,计算该日是该年的第几天。
#include<stdio.h>
int main()
{
int sum_day(int, int);
int leap(int year);
int year, month, day, days;
printf("input date(year,month,day):");
scanf_s("%d,%d,%d", &year, &month, &day);
printf("%d/%d/%d", year, month, day);
days = sum_day(month, day);
if (leap(year) && month >= 3)
days = days + 1;
printf("is the %dth day in this year.\n", days);
return 0;
}
int sum_day(int month, int day)
{
int day_tab[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
int i;
for (i = 1; i < month; i++)
day += day_tab[i];
return(day);
}
int leap(int year)
{
int leap;
leap = year % 4 == 0 && year % 100 != 0 || year % 400 == 0;
return(leap);
}
2.2输入三行字符串。要求统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。
#include<stdio.h>
int main()
{
int i, j, big = 0, sma = 0, num = 0, spa = 0, oth = 0;
char text[3][80];
for (i = 0; i < 3; i++)
{
printf("请输入行%d:\n", i + 1);
gets_s(text[i]);
for (j = 0; j < 80 && text[i][j] != '\0'; j++)
{
if (text[i][j] >= 'A' && text[i][j] <= 'Z')
big++;
else if (text[i][j] >= 'a' && text[i][j] <= 'z')
sma++;
else if (text[i][j] >= '0' && text[i][j] <= '9')
num++;
else if (text[i][j] == ' ')
spa++;
else
oth++;
}
}
printf("大写字母:%d\n", big);
printf("小写字母:%d\n", sma);
printf("数字:%d\n", num);
printf("空格:%d\n", spa);
printf("其它:%d\n", oth);
return 0;
}