2019华中师范873答案

该篇博客包含三个编程题目,分别是:1)找出1300-700之间的合数并分解其质因数;2)将输入字符串中大写字母转为小写,小写字母转为大写;3)使用指针对21个整数进行排序并输出中间值。每个题目都给出了相应的C语言实现代码。
摘要由CSDN通过智能技术生成

1 300-700之间的合数找出他们的互质因子,例如300=22355

考研不考虑算法效率,不用给他节约时间复杂度。
修正一点点bug,最后一行要加else。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
	int  IsPrime(int);	
	void Dissociation_Prime(int);	

	for (int i = 300; i <= 700; i++){
		//判断是否是合数,是的话进行分解质因数   
		if(IsPrime(i))
		   {printf("%d=",i);
			Dissociation_Prime(i);
			printf("\n");
		   }
	}
	return 0;
}
//分解质因数的函数
void Dissociation_Prime(int n) {
     int i = 0, j;
	int m = n;
	for (j = 2;j < m; j++)
			while(n % j == 0)
			{
				printf("%d", j);
				if (n / j > 2) printf("*");
				n /= j;
			}
	
}
int IsPrime(int n) {

	for (int i = 2; i < n / 2; i++)
		if (n % i == 0) return 1;
	     else return 0;
  
}

2将一个字符串里面的大写字母换成小写,小写换成大写

#include <stdio.h>
#include <string.h>
int main(){
	char str[20];
	gets(str);
	for (int i = 0; str[i] != '\0'; i++)
	{
		if (str[i] >= 'a'&&str[i] <= 'z')
		{
			str[i] =str[i]-32;
		}
		else if (str[i] >= 'A'&&str[i] <= 'Z')
		{
			str[i] = str[i] + 32;
		}
	}
	printf("%s", str);
	return 0;
}		

3 用指针法 将21个整数从大到小排列,从小到大排列,输出中间值。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 5
void swap(int *pa,int n)//升序排列
{
    int i,j,t;
    for(i=0;i<n-1;i++)//注意两个循环的起始初值和结束条件
    {
        for(j=i+1;j<n;j++)
        {
			//如果是降序,下一行的符号改一下就可以了
            if(*(pa+i)<*(pa+j))//如果前面大于后面,交换。
              {
                t=*(pa+i);
                *(pa+i)=*(pa+j);
                *(pa+j)=t;
              }
        }
    }
}
int main(){

int a[N];
	
	
	for (int i = 0; i < N; i++)
	{	
		scanf("%d",&a[i]);
		
	}
	swap(a,N);
	for ( i = 0; i < N; i++)
	{	
		printf("%d",a[i]);
		
	}
    	
    
	return 0;
}

编程题
有个5*5矩阵
1 将矩阵的行列倒置,画出流程图。
2 找出 矩阵的最大值,最小值的行和列 ,画出流程图
3将数组中的 重复数值 用 0替换,画出流程图。
精髓在于列指针的用法,注意 循环比较那块!!!

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define N 3

int main(){

int a[N][N];
	
	//先对矩阵进行赋值
	for (int i = 0; i < N; i++)
	{	for (int j = 0; j<N; j++)
		{
			scanf("%d",&a[i][j]);
			
		}
	
	}
	int max_c,max_r;//定义两个变量存放最大值所在的行和列
	int max=0;//存放最大值
/*	for (i = 0; i < N; i++)
	{	for (int j = 0; j<N; j++)
		{
		  
		  if(a[i][j]>max) max_r=i,max_c=j,max=a[i][j];

			
		}
		printf("\n");
	}
    	printf("%d,%d",max_r,max_c);
*/

//替换重复出现的值
     int *p=a[0];
    for (i = 0; i<N*N; i++)
	{	for (int j=i+1;j<N*N; j++)
		{
	       
		  if(*(p+i)==*(p+j))*(p+j)=0;

			
		}
		

	}
		for (i = 0; i < N; i++)
	{	for (int j = 0; j<N; j++)
		{
		  
		  	printf("%d",a[i][j]);
		
		}
		printf("\n");
	}

	return 0;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东方-教育技术博主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值