C语言入门20个简单程序|最新更新2021.7.13

Posted Eric%258436

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言入门20个简单程序|最新更新2021.7.13相关的知识,希望对你有一定的参考价值。

本文创作目的是写几个简单程序帮助学习C语言的同学练手,深化面向过程编程的思维方式。

如有错误,感谢指正

99乘法表

题目1:打印九九乘法表
发散思维,倒九九,竖九九。

#include <stdio.h>
void main() {
	int i, j;
	for (i = 1; i < 10; i++) {
		for (j = 1; j < i + 1; j++) {
			printf("%d+%d=%d\\t", i, j, i * j);
		}
		printf("\\n");
	}

斐波那契兔子

题目2:已知一对兔子每一个月可以生一对小兔子,而一对兔子出生后第二个月就开始生小子。假如一年内没有发生死亡,则一对兔子一年内能繁殖成多少对?
本题解没有使用递归函数

#include <stdio.h>
void main() {
	long f1, f2;
	int i;
	f1 = f2 = 1;
	for (i = 1; i < 7; i++) {
		printf("%12ld%12ld", f1, f2);
		if (i % 4 == 0) printf("\\n");
		f1 = f1 + f2;
		f2 = f1 + f2;
	}
}

100-200间素数判断

素数判断方法(初中奥赛会学近10种判断方法,建议补习,回头传给孩子)
本题解采用暴力循环

#include <stdio.h>
#include <math.h>
void main() {
	int m, i, k, h = 0, leap = 1;
	for (m = 101; m < 201; m++) {
		k = sqrt(m + 1);
		for (i = 2; i <= k; i++) {
			if (m % i == 0) {
				leap = 0;
				break;
			}
		}
		if (leap) {
			printf("%-4d", m);
			h++;
			if (h % 10 == 0) {
				printf("\\n");
			}
		}
		leap = 1;
	}
		printf("\\nThe total is %d",h);
}

完全数问题

如果一个数恰好等于它的真因子之和,则称该数为“完全数”

#include<stdio.h>
int main() {
    int i, j;
    int sum;
    for (i = 1; i <= 1000; i++) {
        sum = 0;
        for (j = 1; j < i; j++)
            if (i % j == 0) {
                sum += j;
            }
        if (sum == i) {
            printf("%d\\n", i);
        }
    }
}

数组旋转问题

44数组逆时针旋转90°存储
想用获取键盘输入,自己写,改成5
5的自己练

#include <stdio.h>
int main() {
    int b[4][4], i, j; 
    int a[4][4] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            b[3 - j][i] = a[i][j];
        }
    }
    printf("rotated matrix:\\n");
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 4; j++) {
            printf("%6d", b[i][j]);
        }

        printf("\\n");
    }
    return 0;
}

杨辉三角

#include <stdio.h>
#define N 10
int main()
{
	int arr[N][N] = { 0 };
	int i = 0;
	for (i = 0; i < N; i++)
	{
		int m = 0;
		for (m = 0; m < N - i; m++)
		{
			printf("  ");
		}
		int j = 0;
		for (j = 0; j <= i; j++)
		{
			if ((0 == j) || (i == j))
			{
				arr[i][j] = 1;
			}
			else
			{
				arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
			}
			printf("%4d", arr[i][j]);
		}
		printf("\\n");
	}
	return 0;
}

成绩数组

通过键盘输入3名学生4门课程的成绩, 分别求每个学生的平均成绩和每门课程的平均成绩。
要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车
其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。

#include<stdio.h>
void main()
{
	float a[4][5],sum1,sum2;
	int i,j;
	for(i=0;i<3;i++)
		for(j=0;j<4;j++)
			scanf("%f",&a[i][j]);
	for(i=0;i<3;i++)
	{
		sum1=0;
		for(j=0;j<4;j++)
		{
			sum1+=a[i][j];
		}
		a[i][4]=sum1/4;
	}
	for(j=0;j<5;j++)
	{
		sum2=0;
		for(i=0;i<3;i++)
		{
			sum2+=a[i][j];
		}
		a[3][j]=sum2/3;
	}
	for(i=0;i<4;i++)
	{
		for(j=0;j<5;j++)
		{
			printf("%6.2f",a[i][j]);
		}
		printf("\\n");
	}
}

字符串反转C语言实现

方式一:
 char* reverseString(char* s) {
	int len = strlen(s);
	int i = 0;
	char ch;
	while (i < len / 2) {
		ch = *(s + i);
		*(s + i) = *(s + len - 1 - i);
		*(s + len - 1 - i) = ch;
		i++;
	}
	return s;
}
 方式二
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 1024
 
void reverse(char* str){
	assert(str);
	int ilen = strlen(str);
	char* p = str + ilen - 1;
	int itemp = 0;
	while(str < p){
		itemp = *p;
		*p = *str;
		*str = itemp;
		p--;
		str++;
	}
}

方式三
//递归实现
void reverse_string(char* str, int len){	
	assert(str);	
	if (*str == '\\0'){		
		return;	
	}	
	reverse_string(str + 1, len - 1);	
	printf("%c", *str);
}
 
//方法二 递归,参数循环入栈,每次往后拷贝一个字符
void revers(char* in, char* out) {
	if (in == NULL || out == NULL ) {
		return;
	}
	if (*in == '\\0') {
		return;			
	}
	revers(in+1, out);
	strncat(out, in, 1);
	return;
}
 
int main(){
	char str[MAX_SIZE];
	printf(" 请输入字符串:\\n");
	gets(str);
	reverse(str);
	prntf(" 反转后的字符串:\\n");
}
指针法
void invert(char *s){
int i.j,k;
char t;
k=strlen(s);
for(i=o.j=k-1;i<k/2;i++,j--)
{ t=*(s+i);*(s+i)=*(s+j);(s+j)=t; }
}
main(){
FILE *fp;
char str[200],*p,i,j;
if((fp=fopen("p9_2.out","w"))==NULL)
{ printf("cannot open thefile\\n");
exit(O);
}
printf("input str:in");gets(str);
printf(”in%s",str);
fprintf(fp."%s",str);
invert(str);
printf("in%s",str);
fprintf(fp,"n%s",str);
fclose(fp);

从字符数组s中删除存放在c中的字符

#include <stdio.h>main()
{ char s[80],c;int j,k;
printf("InEnter a string: ");
gets(s);
printf("\\nEnter a character: ");
c=getchar( );
for(j=k=O;s[j]!= '\\O';j++)
	if(s[j]!=c)
		s[k++]=s[ij];
	s[k]='\\O';
printf("\\n%s",s);

排序输出

编写一个voidsort(int *x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9 1.out中

#include<stdio.h>
void sort(int *x,int n){
int j,k,t;
for(i=0;i<n-1;i++){
	k=i;
	for(j=i+1:j<n;j++){
	if(x[j]>x[k]) k=j;
	if(k!=i){
		t=x[i];
		x[i]=x[k];
		x[k]=t;
	}
}
}
void main()
{FILE *fp;
int *p.i,a[10];
fp=fopen("p9_ 1.out"w");
p=a;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10);
for(;p<a+10;p++)
{ printf("%d ","p);
fprintf(fp,"%d ","p); }
system(' pause");
fclose(fp);
}

无序插入后排序

已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列

main()
{ inta[10]={0,12,17,20,25,28,30}; /* a[0]为工作单元,从a[1]开始存放数据*/
	int x,i,j=6;	/*j为元素个数*/
	printf("Enter a number: ");
	scanf("%d",&x);
	a[0]=x;
	i=j;		/*从最后一个单元开始*/
	while(a[i]>x)
	{ a[i+1]=a[i];i--; } /*将比x大的数往后移动一个位置*/
	a[++i]=x;
	j++;		/*插入x后元素总个数增加*/
	for(i=];i<=j;i++) printf("%8d" ,a[i]);
	printf("\\n");
}

替换输出

编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1 用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10 2. out中

#include<stdio.h>
replace(char* s,char cl,char c2)
{while(*s!='\\0')
	{ if(*s==c1)
	*以上是关于C语言入门20个简单程序|最新更新2021.7.13的主要内容,如果未能解决你的问题,请参考以下文章

初学 C 语言没有项目练手?这 20 个小项目拿走不谢~

初学 C 语言没有项目练手?这 20 个小项目拿走不谢~

求一些C语言入门简单的数学题目,练习一下,顺便附上答案哈

C语言入门编程需要掌握的核心要点有哪些? 为你总结了这20个!

李南江C语言程序设计-编程入门进阶必学 持续更新...

李南江C语言程序设计-编程入门进阶必学 持续更新...