7-1 输出整数各位数字
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main(){
long int number;
scanf("%ld",&number);
int n;
for(n=0;number/(int)pow(10,n);n++){
}
if(n==0) n++;
int a[n];
int i;
for(i=0;i<n;i++){
a[i]=(number/(int)pow(10,i))%10;
}
for(i=n-1;i>=0;i--){
printf("%d ",a[i]);
}
}
7-2 冒泡法排序
#include <stdio.h>
#include <stdlib.h>
void swap(int *p,int *o){
int t;
t=*p;
*p=*o;
*o=t;
}
int main(){
int N,K;
scanf("%d %d",&N,&K);
int a[N];
int *p=a;
int i,t;
for(i=0;i<N;i++){
scanf("%d",p+i);
}
for(i=0;i<K;i++){
for(t=0;t<N-1;t++){
if(*(p+t)>*(p+t+1))
swap(p+t,p+t+1);
}
}
for(i=0;i<N;i++){
printf("%d",*(p+i));
if(i!=N-1) printf(" ");
}
return 0;
}
7-3 评委打分
#include<stdio.h>
int main(){
int *grade=calloc(sizeof(int),10);
int i;
for(i=0;i<10;i++){
scanf("%d",grade+i);
}
int n;
scanf("%d",&n);
int t;
for(i=0;i<n;i++){
scanf("%d",&t);
*(grade+t-1)+=10;
}
for(i=0;i<10;i++){
printf("%d",*(grade+i));
if(i!=9) printf(" ");
}
free(grade);
return 0;
}
7-4 组合数的和
#include<stdio.h>
#include<stdlib.h>
int main(){
int N;
scanf("%d",&N);
int *number=calloc(sizeof(int),N);
int i;
for(i=0;i<N;i++){
scanf("%d",number+i);
if(*(number+i)==0) exit(0);
}
int sum=0;
for(i=0;i<N;i++){
sum+=(*(number+i))*10*(N-1);
for(int t=0;t<N;t++){
if(t!=i) sum+=*(number+t);
}
}
printf("%d",sum);
free(number);
return 0;
}
7-5 数字加密
#include<stdio.h>
#include<stdlib.h>
int main(){
int x;
scanf("%d",&x);
printf("The encrypted number is %d%d%d%d",((x/10)%10+9)%10,(x%10+9)%10,((x/1000)%10+9)%10,((x/100)%10+9)%10);
return 0;
}
7-6 找不同
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
int main(){
int N;
scanf("%d",&N);
int number[N],i;
for(i=0;i<N;i++){
scanf("%d",&number[i]);
}
int k=0,t;
for(i=0;i<N;i++){
k=0;
for(t=0;t<N;t++){
if(i!=t&&number[i]==number[t]) k++;
}
if(k==0){
printf("%d",number[i]);
break;
}
}
if(k) printf("None");
return 0;
}
7-7 判断上三角矩阵
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int is(int n,int num[10][10]){
int i,j,k=0;
for(i=1;i<n;i++){
for(j=0;j<i;j++){
if(num[i][j]) k++;
}
}
if(k) return 0;
else return 1;
}
int main(){
int T;
scanf("%d",&T);
if(T<=0) exit(0);
int n,num[10][10]={0};
int k,t,i,j;
for(k=0;k<T;k++){
scanf("%d",&n);
if(n>10) exit(0);
for(i=0;i<n;i++){
for(j=0;j<n;j++){
scanf("%d",&num[i][j]);
}
}//input
t=is(n,num);
if(t) printf("YES");
else printf("NO");
if(k!=T-1) printf("\n");
}
return 0;
}
7-8 求矩阵各行元素之和
#include<stdio.h>
#include<stdlib.h>
int main(){
int m,n;
scanf("%d %d",&m,&n);
if(m<1||m>6||n<1||n>6) exit(0);
int i,j,x,sum=0;
for(i=0;i<m;i++){
for(j=0;j<n;j++){
scanf("%d",&x);
sum+=x;
}
printf("%d",sum);
if(i!=m-1) printf("\n");
sum=0;
}
return 0;
}
7-9 方阵循环右移
#include<stdio.h>
#include<stdlib.h>
void move(int num[6][6],int n){
int dmp[6][1]={0};
int i,t;
for(i=0;i<6;i++){
dmp[i][0]=num[i][n-1];
}
for(i=n-1;i>0;i--){
for(t=0;t<6;t++){
num[t][i]=num[t][i-1];
}
}
for(i=0;i<6;i++){
num[i][0]=dmp[i][0];
}
}
int main(){
int m,n;
scanf("%d %d",&m,&n);
if(n<1||n>6) exit(0);
int num[6][6]={0};
int i,t;
for(i=0;i<n;i++){
for(t=0;t<n;t++){
scanf("%d",&num[i][t]);
}
}
for(i=0;i<m;i++){
move(num,n);
}
for(i=0;i<n;i++){
for(t=0;t<n;t++){
printf("%d ",num[i][t]);
}
if(i!=n-1) printf("\n");
}
return 0;
}
7-10 求二维数组中的最大值和最小值
#include<stdio.h>
#include<stdlib.h>
int main(){
int a[3][3]={0},*p=a;
int i;
for(i=0;i<9;i++){
scanf("%d",p+i);
}
int max=a[0][0],min=a[0][0];
for(i=0;i<9;i++){
if(*(p+i)>max) max=*(p+i);
if(*(p+i)<min) min=*(p+i);
}
printf("max=%d min=%d",max,min);
return 0;
}
7-11 统计大写辅音字母
#include<stdio.h>
#include<stdlib.h>
int main (){
char ch=0;
int n=0;
do{
ch=getchar();
if(ch<=90&&ch>=65){
switch(ch){
case 65:break;//A;
case 69:break;//E;
case 73:break;//I;
case 79:break;//O;
case 85:break;//U;
default:n++;break;
}
}
}while(ch!='\n');
printf("%d",n);
return 0;
}
7-12 字符串字母大小写转换
#include<stdio.h>
#include<stdlib.h>
int main(){
char ch=0;
while(ch!='#')
{
ch=getchar();
if(ch<=90&&ch>=65) ch+=32;
else if(ch<=122&&ch>=97) ch-=32;
if(ch!='#') printf("%c",ch);
}
return 0;
}
7-13 二进制数据转换成十进制数
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main(){
char num[17]={"\000"};
gets(num);
int n=strlen(num);
int i,result=0;
for(i=0;i<n;i++){
result+=pow(2,i)*((int)num[n-i-1]-48);
}
printf("%d",result);
return 0;
}
7-14 字符串排序
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
char n[5][80]={"\000"};
char ch=0;
int i=0,j=0;
for(i=0;i<5;i++){
do {ch=getchar();} while(ch==32);
j=0;
do{
n[i][j]=ch;
j++;
ch=getchar();
}while(ch!=32&&ch!=10);
}
char result[5][80]={"\000"};
int grade[5]={0};
for(i=0;i<5;i++){
for(j=0;j<5;j++){
grade[i]+=strcmp(n[i],n[j]);
}
}
int min=0;
for(j=0;j<5;j++){
min=0;
for(i=0;i<5;i++){
if(grade[i]<grade[min]) min=i;
}//find the minior grade;
strcpy(result[j],n[min]);
grade[min]=1000;
}
printf("After sorted:\n");
for(i=0;i<5;i++){
printf("%s",result[i]);
if(i!=4) printf("\n");
}
return 0;
}
7-15 找最长的字符串
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
int n;
scanf("%d",&n);
if(n<=0) exit(0);
char ch[n][80];
int i;
for(i=0;i<n;i++){
gets(ch[i]);
}
int longest_i=0;
for(i=0;i<n;i++){
if(strlen(ch[i])>strlen(ch[longest_i])) longest_i=i;
}
printf("The longest is: %s",ch[longest_i]);
return 0;
}