11个C语言小程序让你快速入门程序世界

1、题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?海风教育退费
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

海风教育在线辅导0元一对一试听课等你来领取,领取课程方法:
1、私信留下您的手机号和姓名,需要补习的科目。
2、也可以在海风教育官网留下您的手机号领取 https://www.hfjy.com

程序源代码:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int i, j, k;
printf("\n");
for (i = 1; i < 5; i++)/以下为三重循环/
for (j = 1; j < 5; j++)
for (k = 1; k < 5; k++)
{
if (i != k && i != j && j != k) /确保i、j、k三位互不相同/
printf("%d,%d,%d\n", i, j, k);
}
system(“pause”);
return 0;
}

2、题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
程序分析:在10万以内判断,先将该数加上100后再开方,再将该数加上268后再开方,如果开方后 的结果满足如下条件,即是结果。

程序源代码:

#include <math.h>
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
long int i, x, y, z;
for (i = 1; i < 100000; i++)
{
x = sqrt(i + 100);/x为加上100后开方后的结果/
y = sqrt(i + 268);/y为再加上168后开方后的结果/
if (xx == i + 100 && yy == i + 268)/如果一个数的平方根的平方等于该数,这说明此数是完全平方数/
printf("\n%ld\n", i);
}
system(“pause”);
return 0;
}

3、题目:输入某年某月某日,判断这一天是这一年的第几天?
程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

程序源代码:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int day, month, year, sum, leap;
printf("\nplease input year,month,day\n");
scanf("%d,%d,%d", &year, &month, &day);
switch (month)/先计算某月以前月份的总天数/
{
case 1:sum = 0; break;
case 2:sum = 31; break;
case 3:sum = 59; break;
case 4:sum = 90; break;
case 5:sum = 120; break;
case 6:sum = 151; break;
case 7:sum = 181; break;
case 8:sum = 212; break;
case 9:sum = 243; break;
case 10:sum = 273; break;
case 11:sum = 304; break;
case 12:sum = 334; break;
default :printf(“data error”); break;
}
sum = sum + day;/再加上某天的天数/
if (year % 400 == 0 || (year % 4 == 0 && year % 100 != 0))/判断是不是闰年/
leap = 1;
else
leap = 0;
if (leap == 1 && month > 2)/如果是闰年且月份大于2,总天数应该加一天/
sum++;
printf(“It is the %dth day.”, sum);

system(“pause”);
return 0;
}

4、题目:输入三个整数x,y,z,请把这三个数由小到大输出。
程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。

程序源代码:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int x, y, z, t;
scanf_s("%d%d%d", &x, &y, &z);
if (x > y)
/交换x,y的值/
if (x > z)
/交换x,z的值/
if (y > z)
/交换z,y的值/
printf(“small to big: %d %d %d\n”, x, y, z);
system(“pause”);
return 0;
}

5、题目:用号输出字母C的图案。
程序分析:可先用<|>
<|>号在纸上写出字母C,再分行输出。

程序源代码:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
printf(“Hello C-world!\n”);
printf(" ****\n");
printf(" *\n");
printf(" * \n");
printf(" ****\n");
system(“pause”);
return 0;
}

6、题目:输出9*9口诀。
程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

程序源代码:

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i, j, result;
printf("\n");
for (i = 1; i < 10; i++)
{
for (j = 1; j < 10; j++)
{
result = i * j;
printf("%d*%d=%-3d", i, j, result);/-3d表示左对齐,占3位/
}
printf("\n");/每一行后换行/
}
system(“pause”);
return 0;
}

7.题目:统计空格制表符及换行符个数

#include<stdio.h>
int main()
{
int c=0;
int line=0;
int tab=0;
int space=0;
while((c=getchar())!=EOF)//input Ctrl+D is EOF
{
if(c==’\n’)
line++;
else if(c==’ ‘)
space++;
else if(c==’ ')
tab++;
}
printf(“the number of line is %3d;\nthe number of space is %3d;\nthe number of tab is %3d;\n”,line,space,tab);
return 0;
}

8、题目:输入复制到输出,将连续多个空格替换为一个空格

#include<stdio.h>
int main()
{
int c;
int lastc=‘a’;
while((c=getchar())!=EOF)
{
if(c!=’ ‘)
putchar©;
if(c==’ ')
if(lastc!=c)
putchar©;
lastc=c;

}
return 0;

}

9.题目:将制表符与回退符以可见的方式显示出来

#include<stdio.h>
int main()
{
int c;
while((c=getchar())!=EOF)
{
if(c==’\t’)
printf("\t");
else if(c==’\b’)
printf("\b");//回退符用Ctrl+h输入
else if(c==’\’)
printf("\\");
else
putchar©;
}
return 0;
}

10.题目:统计行数、单词数及字符数

#include<stdio.h>
#define IN 1
#define OUT 0
//统计输入的行数、单词数、字符数
int main()
{
int c;
int line_number;
int word_number;
int c_number;
int state;
c=0;
line_number=0;
word_number=0;
c_number=0;
state=OUT;//单词的计数方式是在开始输入的时候计数,也就是由OUT变为in的时候,所以初始值要设为out;否则会少计一个单词
while((c=getchar())!=EOF)
{
if(c!=’ ’ && c!=’\t’ && c!=’\n’)
c_number++;
if(c==’ ’ || c==’\t’ || c==’\n’)
state=OUT;
else if(stateOUT)
{
state=IN;
word_number++;
}
if(c
’\n’)
line_number++;
}
printf(“the line number is %d\nthe word_number is %d\nthe char number is %d\n”,line_number,word_number,c_number);
return 0;
}

11.题目:以每行一个单词的形式打印输入

#include<stdio.h>
#define IN 1
#define OUT 0
int main()
{
int c,state;
c=0;
state=OUT;
while((c=getchar())!=EOF)
{
if(c==’ ’ || c==’\n’ || c==’\t’)
{
state=OUT;
putchar(’\n’);
}
else if(state==OUT)
{
state=IN;
putchar©;
}
else
putchar©;

}
return 0;

}

统一说明,程序中的IN和OUT状态是为了屏蔽连续的空格换行或者制表符

敲代码一定要多敲多想

在小伙伴思考的同时加深理解

一定不要只是干巴巴的照敲哟!

持续的学习才能让你永远保持上坡路!加油!

猜你喜欢

转载自blog.csdn.net/weixin_43932460/article/details/88997258
今日推荐