这次写了一些老师上课提到的....
//冒泡排序#include <stdio.h>
const int N=4;
void output(char x[], int n); // 函数声明
void sort(char x[],int n);
int main() {
char string[N] = {'2','0','1','9'};
int i;
printf("排序前: \n");
output(string, N);
sort(string,N);
printf("\n排序后: \n");
output(string, N);
printf("\n");
return 0;
}
void sort(char x[],int n){
for(int i=N;i>=0;--i){
for(int j=0;j<i;++j){
if(x[j]<x[j+1]){
int tmp=x[j];
x[j]=x[j+1];
x[j+1]=tmp;
}
}
}
}
void output(char x[], int n) {
int i;
for(i=0; i<N; i++)
printf("%c", x[i]);
}
//输出为偶数的余数#include <stdio.h>
void fun(int k,int bb[]) {
int i;
int j=0;
for(i=1; i<=k; i++) {
if(k%(++i)==0)
bb[j++]=i;
}
for(i=j-1; i>=0; i--) // blank3
printf("%d ",bb[i]);
}
int main() {
int x, *t;
scanf("%d", &x);
t = (int *) malloc(sizeof(int)*x);
fun(x,t);
return 0;
}
//输出特殊矩形#include<stdio.h>
#define N 100
void fun(int a[N][N],int n) {
int i,j;
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if(j==i)
a[i][j]=i;
else
a[i][j]=(i>j?j:i);
}
int main() {
int n,i,j,a[N][N];
scanf("%d",&n);
fun(a,n);
for(i=1;i<=n;i++) {
for(j=1;j<=n;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return 0;
}
#include <stdio.h>
#define N 1000
int fun(int n,int m,int bb[N]) {
int i,j,k=0,flag;
for(j=n;j<=m;j++) {
flag=1;
for(i=2;i<j;i++)
if(j%i==0) {
flag=0;
break;
}
if(flag)
bb[k++]=j;
}
return k;
}
int main(){
int n=0,m=0,i,k,bb[N];
scanf("%d",&n);
scanf("%d",&m);
for(i=0;i<m-n;i++)
bb[i]=0;
k=fun(n,m,bb);
for(i=0;i<k;i++)
printf("%4d",bb[i]);
return 0;
}
//杨辉三角形
#include<stdio.h>
int main (){
int n;
scanf("%d",&n);
int t[n][n];
int line=n;
for(int i=0;i<=line-1;++i){
t[i][0]=1;
printf("%4d",t[i][0]);
for(int k=1;k<i;++k){
t[i][k]=t[i-1][k-1]+t[i-1][k];
printf("%4d",t[i][k]);
}
t[i][i]=1;
if(i)
printf("%4d\n",t[i][i]);
else
printf("\n");
}
return 0;
}
//矩阵加法#include<stdio.h>
int main(){
int i,j;
scanf("%d %d",&i,&j);
int a[i][j],b[i][j],c[i][j];
printf("input a");
for(int m=0;m<i;++m){
for(int n=0;n<j;++n)
scanf("%d",&a[m][n]);
}
printf("\ninput b=");
for(int m=0;m<i;++m){
for(int n=0;n<j;++n)
scanf("%d",&b[m][n]);
}
for(int m=0;m<i;++m){
for(int n=0;n<j;++n){
c[m][n]=a[m][n]+b[m][n];
printf("%4d",c[m][n]);
}
printf("\n");
}
return 0;
}这道题更应该用函数来简化的,(手懒了.....
//求余数 在一定范围内,用了另一种方法
#include<stdio.h>
int fun(int n);
int main(){
int n;
scanf("%d",&n);
fun(n);
return 0;
}
int fun(int n){
int a[n]={0};
for(int i=0;i<n;++i){
if(n%(i+1)==0){
a[i]=i+1;
printf("%d\n",a[i]);
}
}
}
//最大公倍数
#include<stdio.h>
int main(){
int m,n;
scanf("%d %d",&n,&m);//把n设成大数
if(n<m){
int tmp=0;
tmp=m;
m=n;
n=tmp;
}
for(int i=n;;++i){
if(i%n==0&&i%m==0){
printf("%d",i);
break;
}
}
return 0;
}
//任意大的数相加,数组进位
//在输入的时候我去网上找了别人是怎么做的,然后又自己写了一遍
#include<stdio.h>
#include<string.h>
#define Q 200
void fun(char c[],char d[],int,int);
int main (){
char a[Q],b[Q],c[Q],d[Q];
int ma=0,mb=0;
printf("a=");
gets(a);//嗯,学到了
printf("b=");
gets(b);
ma=strlen(a);
mb=strlen(b);//一开始我还在傻乎乎的用循环计数233
for(int i=0;i<ma;i++)
c[ma-i-1]=a[i]-'0';//这个/-'0'是我对比自己的程序的时候发现必须要加上的
for(int i=0;i<mb;i++)
d[mb-i-1]=b[i]-'0';//但是不知道为什么....(想知道为什么....
/*把c数组与d数组倒序,因为加法要从最后一位到第一位*/
fun(c,d,ma,mb);
return 0;
}
void fun(char c[],char d[],int ma,int mb){
int x=0,tmp;
if(mb>ma){
tmp=mb;
ma=tmp;}//防止结果出现0char f[ma];
for(int i=0;i<ma;++i){
f[i]=(c[i]+d[i]+x)%10;
x=(c[i]+d[i]+x)/10;
if(i==ma-1&&x>0)//最后一个数的进位
f[ma-1]=x;//把十位数输到最后一个格子
}
for(int i=ma-1;i>=0;--i)//结果也是要逆序
printf("%d",f[i]);
return;
}