易错点
#include <stdio.h>
int main()
{
int i,j,t;
int n;
int m[20];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%d",&m[i]);//输入:取地址
for(i=0;i<n-1;i++)//i的范围--防止越界
{
for(j=i+1;j<n;j++)//j从i+1起 j++
{
if(m[i]<m[j])//大小取决于升降序
{
t=m[i];
m[i]=m[j];//变量传递
m[j]=t;
}
}
}
for(i=0;i<n;i++)
printf("%d",m[i]);
}
进制转换
n=sum;
for(;;)
{
if(sum>=2)
{
sum/=2;
count++;
}
else
{
count++;
break;
}
}
for(i=count;i>0;i--)
{
power=(int)pow(2,i-1);
printf("%d",n/power);
n%=power;
}
求最大质约数
n=sum;
for(j=2;j<=sqrt(sum);j++)
{
while(sum%j==0)
{
max=j;
sum/=j;
}
if(sum==1)
break;
}
if(sum!=1)
max=n;
printf("%d",max);
法二:先求质数,再求约数
现有一个包含 N 个元素(1≤N≤20)的整数数列 num,编写函数 sort()实现排序处理,
完成前面奇数,后面偶数,分别从小到大排序的任务。使用指针完成地址传递,主函数完成
N、数组元素的输入和处理后的数组元素输出
要求:
1.)编写子函数 void sort(int a[],int n);//参数为数组及其元素个数,用于完成排序任务。
2.)主函数输入 N 及整数数列各个元素,输出处理结果。
#include <stdio.h>
void sort(int a[], int n) {
int i, j, t, count = 0;
int b[20];
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (a[i] > a[j]) {
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}//冒泡排序
for (i = 0; i < n; i++) {
if (a[i] % 2 != 0)
b[count++] = a[i];
}
for (i = 0; i < n; i++) {
if (a[i] % 2 == 0)
b[count++] = a[i];
}//奇数放前,偶数放后
for (i = 0; i < n; i++)
a[i]=b[i];
}
int main() {
int N, i;
int m[20];
scanf("%d", &N);
for (i = 0; i < N; i++)
scanf("%d", &m[i]);//输入
sort(m, N);//调用函数
for (i = 0; i < N; i++)
printf("%d ", m[i]);//输出
}
#include <stdio.h>
int func(char a[])
{
int i,count=0,sum=0;
for(i=0;a[i]!='\0';i++)
{
count++;
}
for(i=0;i<count;i++)
{
if(a[i]>='A'&&a[i]<='Z')
a[i]=a[i]-'A'+'a';
}
for(i=0;i<count/2;i++)
{
if(a[i]==a[count-1-i])
sum++;
}
if(sum==count/2)
return 0;
else
return 1;
}
int main()
{
int m;
char a[50];
gets(a);
m=func(a);
if(m==1)
printf("no");
if(m==0)
printf("yes");
}
#include <stdio.h>
#include <string.h>
void task(char a[])
{
int i,count=0,sum=0,m;
for(i=0;a[i]!='\0';i++)
{
count++;
m=a[i]-'0';
sum+=m;
}
if(sum%2==0)
printf("%d %d 1",count,sum);
else
printf("%d %d 0",count,sum);
}
int main()
{
char a[10];
gets(a);
task(a);
}
#include <stdio.h>
void binary(char a[])
{
int i,sum=0,m,n,count=0,power;
for(i=0;a[i]!='\0';i++)
{
m=a[i]-'0';
sum+=m;
}
n=sum;
for(;;)
{
if(sum>=2)
{
sum/=2;
count++;
}
else
{
count++;
break;
}
}
for(i=count;i>0;i--)
{
power=(int)pow(2,i-1);
printf("%d",n/power);
n%=power;
}
}
int main()
{
char a[9];
gets(a);
binary(a);
}
#include <stdio.h>
void factor(char a[])
{
int i,j,m,n,sum=0,max=0;
for(i=0;a[i]!='\0';i++)
{
m=a[i]-'0';
sum+=m;
}
if(sum<=2)
printf("sum <2.");
else
{
n=sum;
for(j=2;j<=sum;j++)
{
while(sum%j==0)
{
max=j;
sum/=j;
}
if(sum==1)
break;
}
if(sum!=1)
max=n;
printf("%d",max);
}
}
int main()
{
char a[10];
gets(a);
factor(a);
}
#include <stdio.h>
#include<string.h>
void single(char a[])
{
int l,i,m=0,sum=0;
l=strlen(a);
for(i=0;i<l;i++)
sum+=a[i]-'0';
while(sum/10!=0)
{
do
{
m+=sum%10;
sum/=10;
}while(sum!=0);
sum=m;
m=0;
}
printf("%d",sum);
}
int main()
{
char a[10];
gets(a);
single(a);
}
#include <stdio.h>
#include <string.h>
int main()
{
char a;
int n,l,i,j=0,count=0,l2,j2=0;
scanf("%c %d",&a,&n);
char m[50],p[50],q[50];
scanf("%s",&m);
l=strlen(m);
for(i=0;i<l;i++)
{
if(m[i]==a||m[i]==a-'a'+'A'||m[i]==a-'A'+'a')
{
m[i]='*';
count++;
}
if(m[i]!='*')
p[j++]=m[i];
if(count==n)
break;
}
i++;//注意此处,从下一个m[i]开始记录
if(i<l)
{
do
{
p[j++]=m[i];
i++;
}while(m[i]!=0);
}
p[j]='\0';
l2=strlen(p);
for(i=0;i<l2;i++)
{
if(p[i]!='#')
q[j2++]=p[i];
if(p[i]=='#')
break;
}
q[j2]='\0';
puts(q);
}
#include <stdio.h>
int main()
{
int m,n,i,j;
int a[100];
scanf("%d %d",&m,&n);
for(i=0;i<m*n;i++)
scanf("%d",&a[i]);
for(i=0;i<m*n-1;i++)
{
for(j=i+1;j<m*n;j++)
{
if(a[j]<a[i])
{
int t;
t=a[j];
a[j]=a[i];
a[i]=t;
}
}
}
for(i=0;i<m;i++)
{
if(i%2==0)
{
for(j=(i+1)*n-1;j>=i*n;j--)
printf("%d ",a[j]);
printf("\n");
}//奇数行逆序输出
if(i%2!=0)
{
for(j=i*n;j<(i+1)*n;j++)
printf("%d ",a[j]);
printf("\n");
}//偶数行正序输出
}
}
两道单词排序题等再进一步学习后进行整理
对上机作业进行简单梳理,便于重点巩固和后期复习。