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;
}