c语言代码

目录

1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/

​编辑

2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....*/

​编辑3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/

​编辑

4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/

​编辑

5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。*/

​编辑​编辑

6、/*编程打印直角杨辉三角形*/

​编辑

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

​编辑

8、/*完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。*/

​编辑

9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/

​编辑

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

​编辑

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

​编辑

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

​编辑

13、在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置,不存在则返回-1。

​编辑

14、用指针变量输出结构体数组元素。

​编辑

15、建立一个有三个结点的简单链表:

​编辑

16、输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。

​编辑

17、冒泡排序,从小到大

​编辑

18、编写函数countpi,利用公式


1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/
#include "stdio.h"
void main()
{
	int i, j, result;
	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");/*每一行后换行*/
	}
}
2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?兔子的规律为数列1,1,2,3,5,8,13,21....*/
#include "stdio.h"
void main()
{
    long f1, f2;
    int i;
    f1 = f2 = 1;
    for (i = 1; i <= 20; i++)
    {
        printf("%12ld %12ld", f1, f2);
        if (i % 2 == 0) printf("\n");/*控制输出,每行四个*/
        f1 = f1 + f2; /*前两个月加起来赋值给第三个月*/
        f2 = f1 + f2; /*前两个月加起来赋值给第三个月*/
    }
}
3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/
#include<stdio.h>
#include<math.h>
void main()
{

	int a = 101, b = 0, c, d = 2;
	for (a = 101; a <= 200; a++)
	{
		c = (int)sqrt(a);
		for (d = 2; d <= c; d++)
		{
			if (a % d == 0)
				break;
		}
		if (d > c)
		{
			b++;
			printf("%d\t", a);
		}
	}
	printf("\n");
	printf("101-200之间素数的个数%d\n", b);
}
4、/*一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。*/
#include<stdio.h>
int main()
{
	int i, j, s;
	for (i = 2; i <= 1000; i++)
	{
		s = 1;
		for (j = 2; j <= i / 2; j++)
			if (i % j == 0)s += j;
		if (s == i)
		{
			printf("1~1000的完全数有:%d ,其因子是 1 ", i);
			for (j = 2; j <= i / 2; j++)
				if (i % j == 0)printf("%d ", j);
			printf("\n");
		}
	}
	return 0;
}
5、/*下面程序的功能是将一个4×4的数组进行逆时针旋转90度后输出,要求原始数组的数据随机输入,新数组以4行4列的方式输出,请在空白处完善程序。*/
//逆序
#define _CRT_SECURE_NO_WARNINGS//不加可能会报错
#include <stdio.h>
int main()
{
	int a[4][4], b[4][4], i, j; //a存放原始数组数据,b存放旋转后数组数据
	printf("输入16个数字: ");
	/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
	for (i = 0; i < 4; i++)
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &a[i][j]);
			b[3 - j][i] = a[i][j];
		}
	printf("逆序转换后数组为 b:\n");
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%6d", b[i][j]);
		printf("\n");
	}
}

//顺序
#define _CRT_SECURE_NO_WARNINGS//不加可能会报错
#include <stdio.h>
int main()
{
	int a[4][4], b[4][4], i, j; //a存放原始数组数据,b存放旋转后数组数据
	printf("输入16个数字: ");
	/*输入一组数据存放到数组a中,然后旋转存放到b数组中*/
	for (i = 0; i < 4; i++)
		for (j = 0; j < 4; j++)
		{
			scanf("%d", &a[i][j]);
			b[j][3 - i] = a[i][j];
		}
	printf("顺序转换后数组为 b:\n");
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 4; j++)
			printf("%6d", b[i][j]);
		printf("\n");
	}
}
6、/*编程打印直角杨辉三角形*/
#include <stdio.h>
int main()
{
	int i, j, a[6][6];
	for (i = 0; i <= 5; i++)
	{
		a[i][i] = 1; a[i][0] = 1;
	}
	for (i = 2; i <= 5; i++)
		for (j = 1; j <= i - 1; j++)
			a[i][j] = a[i - 1][j] + a[i - 1][j - 1];
	for (i = 0; i <= 5; i++)
	{
		for (j = 0; j <= i; j++)
			printf("%4d", a[i][j]);
		printf("\n");
	}
}
7、/*通过键盘输入3名学生4门课程的成绩,分别求每个学生的平均成绩和每门课程的平均成绩。要求所有成绩均放入一个4行5列的数组中,输入时同一人数据间用空格,不同人用回车。其中最后一列和最后一行分别放每个学生的平均成绩、每门课程的平均成绩及班级总平均分。*/
#define _CRT_SECURE_NO_WARNINGS//不加可能会报错
#include <stdio.h>
void main()
{
	int a[4][5], i, j, sum = 0;
	for (i = 0; i < 3; i++)
	{
		printf("输入第%d位学生的四门成绩:\n ", i + 1);
		for (j = 0; j < 4; j++)
			scanf("%d", &a[i][j]);
	}
	//计算第5列,即每个学生成绩平均值。
	for (i = 0; i < 3; i++)
	{
		sum = 0;
		for (j = 0; j < 4; j++)
			sum += a[i][j];
		a[i][4] = sum / 4;
	}
	//计算第4行,即每一课成绩和总成绩的平均值
	for (j = 0; j < 5; j++)
	{
		sum = 0;
		for (i = 0; i < 3; i++)
			sum += a[i][j];
		a[3][j] = sum / 3;
	}
	for (i = 0; i < 4; i++)
	{
		for (j = 0; j < 5; j++)
			printf("%4d", a[i][j]);
		printf("\n");
	}
}
8、/*完善程序,实现将输入的字符串反序输出,如输入windows 输出swodniw。*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
	char str[100];
	int i;
	printf("输入一串字符:");
	scanf("%s", str);
	printf("反序输出为:");
	for (i = strlen(str) - 1; i >= 0; i--)
		printf("%c", str[i]);
	printf("\n");
	return 0;
}





指针法:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
void Reverse(char* str)
{
    char* left = str;//left指向字符串数组的首元素
    char* right = str + strlen(str) - 1;//right指向字符串的最后一个元素
    while (left < right)//进行首元素和尾元素的交换,直至left等于right为止,此时字符串完成1逆置
    {
        char temp = *left;
        *left = *right;
        *right = temp;
        ++left;
        --right;
    }
}

int main()
{
    printf("输入一串字符:");
    char str[10000];
    gets(str);
    Reverse(str);
    printf("反序输出为:");
    puts(str);
    return 0;
}
9、/*下面程序的功能是从字符数组s中删除存放在c中的字符。*/
#include <stdio.h>
int main()
{
	char s[80], c;
	int j, k;
	printf("\n输入字符串: ");
	gets(s);
	printf("\n输入要删除的字符: ");
	c = getchar();
	for (j = k = 0; s[j] != '\0'; j++)
		if (s[j] != c)
			s[k++] = s[j];
	s[k] = '\0';
	printf("\n删除后字符串为:%s", s);
}
10、/*编写一个void sort(int *x,int n)实现将x数组中的n个数据从大到小排序。n及数组元素在主函数中输入。将结果显示在屏幕上并输出到文件p9_1.out中*/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void sort(int* x, int n)
{
	int i, 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("输入10个数字:");
	for (i = 0; i < 10; i++)
		scanf("%d", p++);
	p = a;
	sort(p, 10);
	printf("从大到小排序 后数字顺序为:" );
	for (; p < a + 10; p++)
	{
		printf("%d ", *p);
		fprintf(fp, "%d ", *p);
	}
	system("pause");
	fclose(fp);

}
11、已知数组a中的元素已按由小到大顺序排列,以下程序的功能是将输入的一个数插入数组a中,插入后,数组a中的元素仍然由小到大顺序排列
#include<stdio.h>
int main()
{
	printf("原来数组a中的元素为:0,12,17,20,25,28,30 ");
	int a[10] = { 0,12,17,20,25,28,30 };//定义一个长度为10的数组
	int i, j, t;
	printf("%d", a[7]);//查看第8个元素值
	printf("\n");
	printf("输入一个数据:");
	scanf_s("%d", &a[7]);//将输入值赋给第8个元素
	printf("\n");
	printf("数组a中的元素重新排序后为:");
	/*冒泡排序由小到大,每一轮比较之后此轮最大的数都会移到此轮最右侧,
	那么每一轮比较之后需要比较的次数都减一,加上插入的共8个元素比较7次,
	也就是8-(1+i),i=0*/
	for (i = 0; i < 8; i++)//外循环控制要进行比较的轮数
		for (j = 0; j < 8 - 1 - i; j++)//内循环控制要比较的次数
			if (a[j] > a[j + 1])//从第0个元素开始左右比较,左右替换,大的数右移
			{
				t = a[j];
				a[j] = a[j + 1];
				a[j + 1] = t;
			}
	for (i = 0; i < 8; i++)/*for循环输出比较后的数组每一个元素值*/
		printf("%-3d", a[i]);
}
12、编写函数replace(char *s,char c1,char c2)实现将s所指向的字符串中所有字符c1用c2替换,字符串、字符c1和c2均在主函数中输入,将原始字符串和替换后的字符串显示在屏幕上,并输出到文件p10_2.out中
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void replace(char* s, char ch1, char ch2)
{
	int i = 0;
	for (; s[i] != '\0'; i++)
	{
		if (s[i] == ch1)
			s[i] = ch2;
	}
	return;
}
int main()
{
	char s1[20];
	char ch1, ch2;
	printf("分别输入字符串、替换的字符、替换后的字符(空格隔开):\n");
	scanf("%s %c %c", s1, &ch1, &ch2);
	replace(s1, ch1, ch2);
	printf("%s\n", s1);
	return 0;
}
13、在一个字串s1中查找一子串s2,若存在则返回子串在主串中的起始位置,不存在则返回-1。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int main()
{
	char s1[100], s2[100];
	int len1, len2, i, j, k;
	printf("输入两个字符串(空格隔开):");
	scanf("%s %s", s1, s2);
	len1 = strlen(s1);
	len2 = strlen(s2);
	for (i = 0; i < len1 - len2 + 1; i++)
	{
		j = 0;
		k = i;
		while (s1[k] == s2[j])
		{
			k++;
			j++;
			if (j == len2)
			{
				printf("%d\n", i+1);
				return 0;
			}
		}
	}
	printf("-1\n");
	return 0;
}
14、用指针变量输出结构体数组元素。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
struct student
{
	int num;
	char* name;
	char sex;
	int age;
}stu[5] = { {1001,"lihua",'F',18},{1002,"liuxing",'M',19},{1003,"huangke",'F',19},{1004,"fengshou",'F',19},{1005,"Wangming",'M',18} };

main()
{
	int i;
	struct student* ps;
	printf("Num \tName\t\t\tSex\tAge\t\n");
	/*用指针变量输出结构体数组元素。*/
	for (ps = stu; ps < stu + 5; ps++)
		printf("%d\t%-10s\t\t%c\t%d\t\n", ps->num, ps->name, ps->sex, ps->age);
	/*用数组下标法输出结构体数组元素学号和年龄。*/
	printf("输出结构体数组元素学号和年龄:\n");
	for (i = 0; i < 5; i++)
		printf("%d\t%d\t\n", stu[i].num, stu[i].age);
}
15、建立一个有三个结点的简单链表:
#include<stdio.h>
#include<string.h>
#define NULL 0
struct student
{
	int num;
	char* name;
	int age;
	struct student* next;
};

void main()
{
	struct student a, b, c, * head, * p;
	a.num = 1001; a.name = "lihua"; a.age = 18; //对结点成员进行赋值
	b.num = 1002; b.name = "liuxing"; b.age = 19;
	c.num = 1003; c.name = "huangke"; c.age = 18;
	head = &a;//建立链表,a为头结点
	a.next = &b;
	b.next = &c;
	c.next = NULL;
	p = head;//输出链表  
	do {
		printf("%5d,%s,%3d\n", p->num, p->name, p->age);
		p = p->next;
	} while (p != NULL);
}
16、输入一个字符串,判断其是否为回文。回文字符串是指从左到右读和从右到左读完全相同的字符串。
#include <stdio.h>
#include <string.h>
#include<string.h>
main()
{
	char s[100];
	int i, j, n;
	printf("输入字符串:\n");
	gets(s);
	n = strlen(s);
	for (i = 0, j = n - 1; i < j; i++, j--)
		if (s[i] != s[j])
			break;
	if (i >= j) printf("是回文串\n");
	else
		printf("不是回文串\n");
}
17、冒泡排序,从小到大
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
void Print(int array[], int len) {
    for (int i = 0; i < len; i++) {
        printf("%d ", array[i]);
    }
}
void BubbleSort(int array[], int len) {
    int tem;
    //外层循环控制 排序的趟数 n个元素排序需要循环n-1次 【1】 
    for (int i = 0; i < len - 1; i++) {
        //内层循环控制比较的次数 n个元素第i趟比较n-i次 【2】
        for (int j = 0; j < len - 1 - i; j++) {
            //比较相邻的元素大小 目的:将最大的元素选出到移动到最后 
            if (array[j] > array[j + 1]) {
                tem = array[j];
                array[j] = array[j + 1];
                array[j + 1] = tem;
            }
        }
    }
}
int main() {
    int array[] = { 3,44,38,5,47,15,36 };
    int len = sizeof(array) / sizeof(int);
    printf("原始序列为:\n");
    Print(array, len);

    BubbleSort(array, len);
    printf("\n排序后序列为:\n");
    Print(array, len);
}
18、编写函数countpi,利用公式

 


计算π的近似值,当某一项的值小于10-5时,认为达到精度要求,请完善函数。将结果显示在屏幕上并输出到文件p7_3.out中。

#include<stdio.h>
double countpi(int n)
{
	int i;
	double sum = 1.0;
	for (i = 1; i <= n; i++)
	{
		sum = sum * i / (2 * i + 1);
	}
	return(sum);
}

int main()
{
	double countpi(int n);
	int i;
	double count = 1;
	for (i = 1; countpi(i) > 0.00001; i++)
	{
		count += countpi(i);
	}
	printf("π的近似值为:");
	printf("%0.5f\n", 2 * count);
	return 0;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值