中国大学生Mooc《C语言程序设计精髓》课后编程题

本文介绍了中国大学生Mooc《C语言程序设计精髓》课程中的七个编程练习,包括二分法求根、矩阵转置、奇偶数分离、数字字符串转换、查找子串、凯撒密码和统计重复字符。这些练习覆盖了C语言的基础和进阶技巧,旨在提升编程能力。
摘要由CSDN通过智能技术生成

目录

1.二分法求根

2.矩阵转置

3.奇偶数分离

4.数字字符串转换为整型数

5.查找子串

6.凯撒密码

7.统计重复字符

1.二分法求根

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define EPS 1e-6

float F( float x );
int main()
{
	float x1,x2,x0,fx1,fx2,fx0=1;
	scanf("%f,%f",&x1,&x2);
	while( fabs(fx0)>EPS )
	{
		x0=(x1+x2)/2;
		fx0=F(x0);
		fx1=F(x1);
		fx2=F(x2);
		if( fx1*fx2>0 )
		{
			printf("No root!\n");
			exit(0);
		}
		if( fx0*fx1<0 )
		{
			x2=x0;
			continue;
		}
		if( fx0*fx2<0 )
		{
			x1=x0;
			continue;
		}
	}
	printf("x=%6.2f\n",x0);
	return 0;
}
float F( float x )
{
	float f;
	f=x*x*x-x-1;
	return f;
}

2.矩阵转置

题目内容:

某二维数组存放的数据构成一个n*n的方阵,其中n<=5。写程序,从键盘输入n的值(n<=5),该n*n矩阵中各元素的值按下面的公式计算:

a[i][j] = i * n + j + 1

其中,a[i][j]表示第i行第j列的元素。要求分别输出该矩阵和它的转置矩阵。

注意:定义数字大小N时,请用

#define N 10

输入格式: "%d"

输出提示:"The original matrix is:\n"

输出提示:"The changed matrix is:\n"

输出格式: 矩阵的列与列之间为%3d,行与行之间为\n

#include<stdio.h>
void Printorigin( int *p ,int m,int n );
void Printchange( int *p1,int *p2,int m,int n);
int main()
{
	int i,j,n;
	scanf("%d",&n);
	int array1[n][n],array2[n][n];;
	int *p1=*array1,*p2=*array2;
	for(i=0;i<n;i++)
	{
		for(j=0;j<n;j++)
		{
			array1[i][j]=i*n+j+1;
		}
	}
	printf("The original matrix is:\n");
	Printorigin( p1,n,n );
	printf("The changed matrix is:\n");
	Printchange( p1,p2,n,n );
	Printorigin( p2,n,n );
	return 0;
}
void Printorigin( int *p ,int m,int n )
{
	int i,j;
	for( i=0;i<m;i++ )
	{
		for( j=0;j<n;j++ )
		{
			printf("%3d",*(p+i*n+j));
		}
		printf("\n");
	}
}
void Printchange( int *p1,int *p2,int m,int n)
{
	int i,j;
	for( i=0;i<m;i++ )
	{
		for(j=0;j<n;j++)
		{
			*(p2+i*n+j)=*(p1+j*n+i);
		}
	}
}

3.奇偶数分离

题目内容:

输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。

函数原型如下所示:

void Seperate(int a[], int n); //数组a[]存放用户输入的n个整数

解题思路:用两个循环分别输出奇数和偶数,在输出第一个数时用"%d"格式字符,在输出其余数时用",%d"格式字符,用标志变量记录和判断是否是第一个奇数或偶数。

程序运行结果示例1:

Input n:7↙</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值