- 编写一个程序,从键盘输入立方体的长宽高,在屏幕上输出它的体积。
#include<stdio.h>
float js(float x,float y,float g);
int main(){
printf("输入长宽高:");
float x,y,g,v;
scanf("%f%f%f",&x,&y,&g);
v=js(x,y,g);
printf("体积为%fCM",v);
}
float js(float x,float y,float g){
float v;
v=x*y*g;
return(v);
}
- 求给定值X的阶乘函数
#include<stdio.h>
long jc(int x);
int main(){
int x;
long y;
printf("输入X的值:");
scanf("%d",&x);
y=jc(x);
printf("%lld",y);
}
long jc(int x)
{
long y;
for(y=1;x>0;--x){
y=y*x;
}
return(y);
}
- 编辑一个函数,求1+1/2+1/3+…1/n的值。
#include<stdio.h>
int main(){
float js(float x);
float x;
float y;
y=0;
scanf("%f",&x);
y=js(x);
printf("%f",y);
}
float js(float x){
int i;
float y,l;
y=1;
l=1;
for(i=2;i<x+2;i++){
y=y+l/i;
}
return(y);
}
- 打印N个空格。
#include<stdio.h>
int main(){
void dy(int x);
int x;
printf("打印多少个空格:");
scanf("%d",&x);
dy(x);
}
void dy(int x){
int i;
for(i=0;i<x;i++){
printf("%c ",' ');
}
return;
}
5.编一函数,求X的N次方的值,其中N是整数。
#include<stdio.h>
int main(){
float cf(int x,int n);
int n;
printf("数输入x:");
int x;
int y;
scanf("%d%d",&x,&n);
y=cf(x,n);
printf("%d的%d次方为%d",x,n,y);
}
float cf(int x,int n){
int i;
int y;
y=1;
for(i=0;i<n;i++){
y=x*y;
}
return(y);
}
- 编辑一函数,将一个给定的整数转换成相对应的字符然后输出。
#include<stdio.h>
int main(){
void zh(int x);
int x;
x=0;
zh(x);
}
void zh(int x){
int a[10]={65,66,98,41,80,90,100,152,63,78};
int i;
char y;
for(i=0;i<10;i++){
y=a[i];
printf("%c",y);
}
return;
}
- 有数组a[10],b[10],要求统计输出两数组元素大于、小于、等于的次数和两个数组大小的情况(若数组a大于数组b的次数多余数组b大于数组a的次数,则认为数组a大于数组b,反之,则认为数组b大于数组a)
#include<stdio.h>
int main(){
int js(int x,int y);
int a[10];
int b[10];
int i,n,k,j;
n=k=j=0;
printf("输入A数组的值:");
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
printf("\n");
printf("输入B数组的值:");
for(i=0;i<10;i++){
scanf("%d",&b[i]);
}
for(i=0;i<10;i++){
if(js(a[i],b[i])==1){
n++;
}
else if(js(a[i],b[i])==-1){
k++;
}
else{
j++;
}
}
printf("A数组元素大于B数组元素的次数为%d",n);
printf("\n");
printf("A数组元素小于B数组元素的次数为%d",k);
printf("\n");
printf("A数组元素等于B数组元素的次数为%d",j);
printf("\n");
if(n>k){
printf("A数组元素大于B数组");
}
else if(n<k){
printf("B数组元素大于A数组");
}
else{
printf("A数组元素等于B数组");
}
}
int js(int x,int y){
int i;
if(x>y){
i=1;
}
else if(x<y){
i=-1;
}
else{
i=0;
}
return(i);
}
- 将数组中的最大元素值与第一个元素值交换。
#include<stdio.h>
int main(){
void px(int b[]);
int a[10];
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
}
px(a);
for(int i=0;i<10;i++){
printf("%3d",a[i]);
}
}
void px(int b[]){
int i,j,k;
j=b[0];
for(i=0;i<10;i++){
if(j<b[i]){
j=b[i];
}
}
k=b[0];
b[0]=j;
b[i-1]=k;
return;
}
- 将一个10个元素的一维数组用函数排序。
#include<stdio.h>
int main(){
void px(int b[]);
int a[10];
int i;
for(i=0;i<10;i++){
scanf("%d",&a[i]);
}
px(a);
}
void px(int a[]){
int i;
for(i=9;i>=0;i--){
printf("%3d",a[i]);
}
return;
}
- 从键盘输入一非负整数n,并求出n!的值。
#include<stdio.h>
int main(){
int jc(int x);
int n,k,i,j;
printf("输入N:");
scanf("%d",&n);
j=n;
while(n!=-1){ //输入-1结束循环
for(k=0;k<n;){
k++;
i=jc(k);
}
scanf("%d",&n);
}
printf("%d的阶乘为%d",j,i);
}
int jc(int x){
int i;
i=0;
if(x==0){
i=1;
}
else if(x>0){
i=x*jc(x-1);
}
return(i);
}
- 编写一个程序,利用函数的递归调用求x的n次方的值。其中n为正整数。
#include<stdio.h>
int main(){
int cf(int x,int n);
int x,n,i,k;
printf("输入数值:");
scanf("%d",&x);
printf("输入次方数:");
scanf("%d",&n);
i=cf(x,n);
printf("%d^%d=%d",x,n,i);
}
int cf(int x,int n){
if(n==0){
return(1);
}
else
{
return(x*cf(x,(n-1)));
}
}
- 输出1~5的阶乘。
#include<stdio.h>
int main(){
int jc(int x);
int i;
for(i=1;i<6;i++){
printf("%d!=%d \n",i,jc(i));
}
}
int jc(int x){
int i,j;
j=x;
for(i=1;i<j ;i++){
x=x*i;
}
return(x);
}
- 编写程序,输入20个学生成绩,求平均成绩。
#include<stdio.h>
int main(){
double tj(double b[]);
double a[20];
int i;
printf("输入学生成绩:");
for(i=0;i<20;i++){
scanf("%lf",&a[i]);
}
printf("平均成绩为%lf",tj(a)/i);
}
double tj(double b[]){
int i,y;
y=0;
for(i=0;i<20;i++){
y=b[i]+y;
}
return y;
}
- 打印九九乘法表。
/*#include<stdio.h>
int main(){
int i;
int x;
for(i=1;i<10;i++){
for(x=1;x<=i;x++){
printf("%d*%d=%d \t",i,x,i*x);
}
printf("\n");
}
}*/
#include<stdio.h>
int main(){
void jj(int i,int a);
int i,a;
a=1;
for(i=1;i<10;i++,a++){
jj(i,a);
}
}
void jj(int i,int a){
int x,y,z;
z=1;
for(x=1;x<=i;x++){
for(y=1;y<a;){
y++;
z=x*y;
}
printf("%d*%d=%d \t",x,y,z);
}
printf("\n");
}
- 编写一程序,从键盘为一个10*10维整型数组输入数据,并对该数组进行转置操作,即行、列互换。
#include<stdio.h>
int main(){
int px(int b[10][10]);
int a[10][10];
int i,j;
printf("输入数据:");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
scanf("%d",&a[i][j]);
}
}
px(a);
}
int px(int b[10][10]){
int i,k;
for(k=0;k<10;k++){
for(i=9;i>=0;i--){
printf("%3d",b[i][k]);
}
printf("\n");
}
return 0;
}
16.编写一个计算字符串长度的函数。
#include<stdio.h>
int i=0;
int main(){
char a[100];
int x;
int cd(char c[]);
printf("输入一串字符:");
gets(a);
x=cd(a);
printf("这串字符的长度为:%d",x);
}
int cd(char c[]){
if(c[i]=='\0'){
return (i);
}
else{
i++;
cd(c);
}
}
- 编写已知三角形三边求面积的函数,对于给定的3个量,按照两边和大于第三边的原则,判别是否构成三角形,若能构成三角形,输出对应的三角形面积。要求主函数输入10组三角形三边,输出其构成三角形的情况。
#include "math.h"
#include<stdio.h>
int main(){
double a[10][3];
double s,x;
double mj(double b[10][3],int i);
double xz(double b[10][3],int i );
int i,j;
printf("输入三角形三条边:");
for(j=0;j<10;j++){
for(i=0;i<3;i++){
scanf("%lf",&a[j][i]);
}
s=mj(a,j);
x=xz(a,j);
i=0;
if(s==0){
printf("边长分别为%lf,%lf,%lf不满足形成三角形的基本条件!!!!",a[j][i],a[j][i+1],a[j][i+2]);
printf("\n");
}
else if(x==0){
printf("边长分别为%lf,%lf,%lf的锐角三角形面积为:%lf",a[j][i],a[j][i+1],a[j][i+2],s);
printf("\n");
}
else if(x==1){
printf("边长分别为%lf,%lf,%lf的直角三角形面积为:%lf",a[j][i],a[j][i+1],a[j][i+2],s);
printf("\n");
}
else if(x==2){
printf("边长分别为%lf,%lf,%lf的钝角三角形面积为:%lf",a[j][i],a[j][i+1],a[j][i+2],s);
printf("\n");
}
}
}
double mj(double b[10][3],int i ){
double p,s,x;
int j;
for(j=0;j<3;j++){
if(b[i][j]<b[i][j+1]+b[i][j+2]){
p=(b[i][j]+b[i][j+1]+b[i][j+2])/2;
x=p*(p-b[i][j])*(p-b[i][j+1])*(p-b[i][j+2]);
s=sqrt(x);
}
else{
s=0;
}
return s;
}
}
double xz(double b[10][3],int i ){
int x,j;
for(j=0;j<3;j++){
if(((b[i][j]*b[i][j])+(b[i][j+1]*b[i][j+1]))>(b[i][j+2]*b[i][j+2])){
x=0;
}
if(((b[i][j]*b[i][j])+(b[i][j+1]*b[i][j+1]))==(b[i][j+2]*b[i][j+2])){
x=1;
}
if(((b[i][j]*b[i][j])+(b[i][j+1]*b[i][j+1]))<(b[i][j+2]*b[i][j+2])){
x=2;
}
return x;
}
}
- 设有两个一维数组a[100],b[100],试编辑程序分别将它们按升序排列,再将a,b两数组合并存入c数组,使得c数组也按升序排列。若a,b有相等的元素,则把a数组的相等元素优先存入c数组中(其中C数组为[200]).
#include<stdio.h>
int main(){
void px(int a[100],int b[100]);
int a[100];
int b[100];
int i;
printf("给数组a[100]赋值:");
for(i=0;i<100;i++){
scanf("%d",&a[i]);
}
printf("给数组b[100]赋值:");
for(i=0;i<100;i++){
scanf("%d",&b[i]);
}
px(a,b);
}
void px(int a[100],int b[100]){
int i,j,k,x;
int c[200];
printf("a数组升序排列后:");
for(i=0; i<100-1; i++){
for(j=0; j<100-1-i; j++){
if(a[j]>a[j+1]){
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
}
for(i=0;i<100;i++){
printf("%3d",a[i]);
}
printf("\n");
printf("b数组升序排列后:");
for(i=0; i<100-1; i++){
for(j=0; j<100-1-i; j++){
if(b[j]>b[j+1]){
k=b[j];
b[j]=b[j+1];
b[j+1]=k;
}
}
}
for(i=0;i<100;i++){
printf("%3d ",b[i]);
}
printf("\n");
j=0;
for(i=0;i<100;i++){
if(a[i]==b[i]){
c[j]=a[i];
j++;
}
}
for(i=0;i<100;i++){
if(a[i]!=b[i]){
c[j]=a[i];
j++;
}
}
for(i=0;i<100;i++){
c[j]=b[i];
j++;
}
for(k=0;k<200-1;k++){
for(i=0;i<200-1-k;i++){
if(c[i]>c[i+1]){
x=c[i];
c[i]=c[i+1];
c[i+1]=x;
}
}
}
printf("C数组升序排列后:");
for(i=0;i<200;i++){
printf("%3d ", c[i]);
}
}
- 编写一个判别素数的函数,在主函数中输入一个整数,输出该数是否为素数的信息。
#include<stdio.h>
int main(){
void js(int x);
int a;
printf("输入一个整数:");
scanf("%d",&a);
js(a);
}
void js(int x){
int i,a;
a=0;
for(i=2;i<x/2;i++){
if(x%1==0){
a++;
}
}
if(a==0){
printf("%d是素数。\n", x);
}else{
printf("%d不是素数。\n", x);
}
}
- 编写一个程序,把M*N矩阵a的元素逐列按降序排列,假设M,N不超过10,分别编写求二维数组元素值最大和元素值最小的函数,主函数初始化一个二维数组a[10][10],调用定义的两个函数输出每行,每列的最大值,最小值。
#include<stdio.h>
int main(){
void px(int a[10][10]);
void qz(int a[10][10]);
int a[10][10];
int i,j;
printf("给a[10][10]赋值:") ;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
scanf("%d",&a[i][j]);
}
}
qz(a);
px(a);
}
void px(int a[10][10]){
int i,j,k,l,x;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
for(k=0;k<10;k++){
for(l=0;l<10;l++){
if(a[i][j]>a[k][l]){
x=a[i][j];
a[i][j]=a[k][l];
a[k][l]=x;
}
}
}
}
}
int max ,min;
max=min=a[0][0];
printf("降序排列:\n");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
printf("%d",a[i][j]);
if(max<a[i][j]){
max=a[i][j];
}
else if(min>a[i][j]){
min=a[i][j];
}
}
printf("\n");
}
printf("降序排列后 :");
printf("max=%d;min=%d",max,min);
printf("\n");
}
void qz(int a[10][10]){
int i,j,max,min;
max=min=a[0][0];
printf("每行");
printf("\n");
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(max<a[i][j]){
max=a[i][j];
}
else if(min>a[i][j]){
min=a[i][j];
}
if(j==9){
printf("第%d行:max=%d,min=%d",i+1,max,min);
}
}
printf("\n");
j=0;
max=min=a[i+1][j];
}
printf("每列");
printf("\n");
max=min=a[0][0];
for(i=0;i<10;i++){
for(j=0;j<10;j++){
if(max<a[j][i]){
max=a[j][i];
}
else if(min>a[j][i]){
min=a[j][i];
}
if(j==9){
printf("第%d列max=%d,min=%d",i+1,max,min);
}
}
printf("\n");
j=0;
max=min=a[j][i+1];
}
}
-
编写一个程序,实现由主函数输入m,n,按下述公式输出C(m,n)的值。
C(m,n)=m!/n!(m-n)!
#include<stdio.h>
int main(){
double m,n,y,i,j,k;
double nj(double n);
double mj(double m);
double yj(double y);
printf("输入n的值:");
scanf("%lf",&n);
printf("输入m的值:");
scanf("%lf",&m);
y=m-n;
i=nj(n);
j=mj(m);
k=yj(y);
printf("C(m,n)=%lf",j/(k*i));
}
double nj(double n){
double i;
if(n==1){
return n;
}else{
i=n*nj(n-1);
return i;
}
}
double mj(double m){
double i;
if(m==1){
return m;
}else{
i=m*mj(m-1);
return i;
}
}
double yj(double y){
double i;
if(y==1){
return y;
}else{
i=y*yj(y-1);
return y;
}
}
- 分别编写求圆面积和周长的函数,另编写一个主函数去调用它,要求主函数能输入多个圆的半径,且显示相应的圆面积和周长。
#include<stdio.h>
#define PI 3.14
int main(){
double x;
double js(double x);
printf("输入多个圆的半径以-1表示结束输入:");
scanf("%lf",&x);
while(x!=-1){
printf("的圆,它的半径为%lf ",x,js(x));
scanf("%lf",&x);
printf("\n");
}
}
double js(double x){
double c,s;
c=x*PI;
s=x*x*PI;
printf("面积S=%lf;周长C=%lf",s,c);
return 0;
}
- 编写一个将两段字符链接在一起的函数(即实现strcat函数的功能),两个字符段由主函数输入,链接后的字符也由主函数输出。
#include<stdio.h>
int main(){
char s1[20]="haoge";
char s2[]="zhengsuai";
void lj(char s1[10],char s2[10]);
lj( s1, s2);
printf("%s",s1);
}
void lj(char s1[10],char s2[10]){
char *i,*l;
i=s1;
l=s2;
while(*i!='\0'){
i++;
}
while(*l!='\0'){
*i++ = *l++;
}
}
- 编写一个实现strcpy函数的功能的函数,并用主函数调用。
#include<stdio.h>
int main(){
char s1[20]="";
char s2[]="zhengsuai";
void lj(char s1[10],char s2[10]);
lj( s1, s2);
printf("%s",s1);
}
void lj(char s1[10],char s2[10]){
char *i,*l;
i=s1;
l=s2;
while(*l!='\0'){
*i++ = *l++;
}
}
- 编写一个实现strcmp的函数功能的函数,并用主函数调用。
#include <stdio.h>
#include <string.h>
int mycmp(char *s1, char *s2)
{
while(*s1 == *s2 && *s1 != '\0') {
s1++;
s2++;
}
return *s1 - *s2;
}
int main()
{
char s1[20]="haoge";
char s2[20]="zhengsuai";
if(s1[strlen(s1) - 1] == '\n') {
s1[strlen(s1) - 1] = '\0';
}
if(s2[strlen(s2) - 1] == '\n') {
s2[strlen(s2) - 1] = '\0';
}
printf("%d", mycmp(s1, s2));
return 0;
}
- 编写一个,调用24题的函数,将字符数组char1[10]的前5个字符复制到字符数组char2[10]中。主函数实现字符数组char1[10]的初始化,并输出复制后的字符数组ch2[10]的内容,
#include<stdio.h>
int main(){
char s2[20]="";
char s1[]="zhengsuai";
void lj(char s2[10],char s1[10]);
lj( s2, s1);
printf("%s",s2);
}
void lj(char s2[10],char s1[10]){
char *i,*l;
int k=0;
i=s2;
l=s1;
while(*l!='\0'){
k++;
if(k==6){
break;
}
*i++ = *l++;
}
}
- 编写一个函数实现strlen函数的功能,并用主函数调用。
#include <stdio.h>
#include <string.h>
int mylen(char *s)
{
char *p = s;
while(*s != '\0') {
s++;
}
return s - p;
}
int main()
{
char s[20]="haogezhengsuai";
if(s[strlen(s) - 1] == '\n') {
s[strlen(s) - 1] = '\0';
}
printf("%d", mylen(s));
return 0;
}
28.编写一个计算x的y次幂的递归函数,x为double型,y为int型,函数返回值为double型。函数中使用下面的格式:
power(x,0)=1.0;
power(x,y)=power(x,y-1)*x;
要求从主程序输入浮点数,调用这个递归函数,求其整数次幂。
#include<stdio.h>
int main(){
double power(double x,int y);
int y;
double x;
printf("输入x的值:");
scanf("%lf",&x);
printf("输入y的值:");
scanf("%d",&y);
printf("%lf的%d次方为%lf",x,y,power(x,y));
}
double power(double x,int y){
int s;
if(y==0){
return (1);
}else{
return (power(x,y-1)*x);
}
}
- 编写一个实现将十六进制转换为十进制的函数,并用主函数调用。
#include<cstdio>
#include<cstring>
char a[10000];
int main()
{
int zh(char a []);
printf("输入十六进制数:") ;
scanf("%s",&a);
zh(a);
}
int zh(char a[] ){
int m=16;
int f=0;
for(int i=0;i<strlen(a);i++)
{
f*=m;
if (a[i]=='A'||a[i]=='B'||a[i]=='C'||a[i]=='D'||a[i]=='E'||a[i]=='F')
f+=(a[i]-'A'+10);
else
f+=(a[i]-'0');
}
printf("转换为十进制为:%d",f);
return 0;
}
- 编写一个将英文字符串中的所有首字符转换成为相应大写字符的函数,并用主函数调用。
#include<cstdio>
#include<cstring>
int main(){
void zh(char a[1000]);
char a[1000];
gets(a);
zh(a);
}
void zh(char a[1000]){
int k=0;
int x=0;
for(int i=0;a[i]!='\0';i++){
k++;
if((a[i]>='a'&&a[i]<='z')&&k==1){
x=a[i];
a[i]=x-32;
}
if(a[i]==' '){
k=0;
}
printf("%c",a[i]);
}
}
- 编写一个函数aver(a,n),其中a是整型一维数组,n是a数组的长度,要求通过全局变量pave和nave将a数组中正整和负数的平均值传递给调用程序。
#include<stdio.h>
double pave, nave;
int main(){
double a[10];
int n,i;
void js(double a[],int n);
printf("输入要输入数组的长度:");
scanf("%d",&n);
printf("输入数值:");
for(i=0;i<n;i++){
scanf("%lf",&a[i]);
}
js(a,n);
printf("a数组中正数的平均值:%lf;a数组中负数的平均值:%lf",pave,nave);
}
void js(double a[],int n){
double k,l,y,x,z;
int i;
k=l=y=x=z=0;
for(i=0;i<n;i++){
if(a[i]>0){
k++;
y=a[i]+y;
}
if(a[i]<0){
l++;
x=a[i]+x;
}
}
if(z==x){
nave=0;
pave=y/k;
}
if(z==y){
pave=0;
nave=x/l;
}
if(z!=x){
nave=x/l;
}
if(z!=y){
pave=y/k;
}
}
- 编写一个程序,每调用一次函数,显示一静态局部变量中的内容,然后为其加一。
#include<stdio.h>
int main(){
int x[10];
int i,l;
int dy(int x[10]);
printf("输入测试数组:");
for(i=0;i<10;i++){
scanf("%d",&x[10]);
l=dy (x);
printf("静态局部变量内容:%d 调用%d",l,l);
printf("\n");
}
}
int dy(int x[10]){
static int n=0;
n++;
return n;
}
- 输入10个学生的3门课的成绩,分别用函数求:
- 每一个学生的平均分。
- 每门课的平均分。
- 按学生平均分降序排列输出学生信息。
- 统计不及格学生,输出其相应信息;
- 编写一菜单主函数,菜单内容包括以上4部分。
#include<stdio.h>
int mgk(double a[10][3]);
int jx(double a[10][3]);
int tj(double a[10][3]);
int main(){
double b[10][3];
int i,j;
printf("输入同学们的成绩:");
for(i=0;i<10;i++){
for(j=0;j<3;j++){
scanf("%lf",&b[i][j]);
}
}
jx(b);
mgk(b);
tj(b);
}
int mgk(double a[10][3]){
int i,j;
double x,k,y;
x=k=y=0;
for(i=0;i<10;i++){
for(j=0;j<3;j++){
if(j==0){
x=x+a[i][j];
}
if(j==1){
k=k+a[i][j];
}
if(j==2){
y=y+a[i][j];
}
}
}
printf("\n");
printf("各科平均分如下:");
printf("\n");
printf("\n");
printf("第1科的平均分为%lf \n",x/10);
printf("第2科的平均分为%lf \n",k/10);
printf("第3科的平均分为%lf \n",y/10);
printf("\n");
return 0;
}
int jx(double a[10][3]){
int i,j,y;
double b[10];
double c[10];
double x,k;
x=0;
printf("\n");
printf("各个同学平均分如下:");
printf("\n");
printf("\n");
for(i=0;i<10;i++){
for(j=0;j<3;j++){
x=a[i][j]+x;
}
c[i]=b[i]=x/3;
printf("第%d位同学的平均分为%lf \n",i+1,x/3);
x=0;
}
for(i=0;i<9;i++){
for(j=0;j<9-i;j++){
if(b[j]<b[j+1]){
k=b[j];
b[j]=b[j+1];
b[j+1]=k;
}
}
}
printf("\n");
printf("各个同学排名及平均成绩如下:");
printf("\n");
printf("\n");
for(y=0;y<10;y++){
for(i=0;i<10;i++){
if(b[i]==c[y]){
printf("第%d位第%d名平均分为%lf \n",y+1,i+1,b[i]);
break;
}
}
}
printf("\n");
printf("平均分降序输出如下:") ;
printf("\n");
printf("\n");
for(i=0;i<10;i++){
printf("第%d名平均分为%lf \n",i+1,b[i]);
}
return 0;
}
int tj(double a[10][3]){
int i,j;
printf("\n");
printf("各科不及格的同学如下:");
printf("\n");
printf("\n");
for(i=0;i<10;i++){
for(j=0;j<3;j++){
if(a[i][j]<60){
printf("第%d位同学的第%d科没有及格分数为%lf.\n",i+1,j+1,a[i][j]);
}
}
}
return 0;
}