1.指针(1) 有以下程序void f( int y,int *x){y=y+*x; *x=*x+y;}main( ){ int x=2,y=4;f(y,&x);printf(“%d %d\n”,x,y);}执行后输出的结果是【1】。
(2) 下面程序的运行结果是:[2] 。
void swap(int *a,int *b){ int *t;t=a; a=b; b=t;}main(){ int x=3,y=5,*p=&x,*q=&y;swap(p,q);printf(“%d%d\n”,*p,*q);}(3) 设有以下程序:main(){ int a, b, k=4, m=6, *p1=&k, *p2=&m;a=pl= =&m;b=(*p1)/(*p2)+7;printf(“a=%d\n”,a);printf(“b=%d\n”,b);}执行该程序后,a的值为【3】,b的值为【4】。
(4) 下列程序的输出结果是【5】。
void fun(int *n){ while( (*n)--)printf(“%d”,++(*n));}main(){ int a=100;fun(&a);}(5) 以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
void func(int x,int y, [6] z){ *z=x+y; }(6) 函数void fun(float *sn, int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn 传回;n通过形参传入,n的值大于等于0。
请填空。
void fun( float *sn, int n){ float s=0.0, w, f=-1.0;int i=0;for(i=0; i<=n; i++){ f= [7] * f;w=f/(2*i+1);s+=w;}[8] =s;}(7) 以下函数的功能是,把两个整数指针所指的存储单元中的内容进行交换。
请填空。
exchange(int *x, int *y){ int t;t=*y; *y= 【9】; *x= 【10】;}(8) 下面函数要求用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add(int x,int y, 【11】z){ 【12】=x+y;}2.函数(1) 给出年、月、日,问是星期几(星期日~六用0~6表示)。
#include<iostream.h>int month_to_day(int c);void show(int d);int year,month,day;int main(){cout<<"请输入年月日"<<endl;cin>>year>>month>>day;int a=year-1900,b=a/4,c=month-1,d;//a表示过了几年,b表示a中有几年是闰年,//c表示过了几个月,d表示一共有多少天c=month_to_day(c); //把月份转成天数if(a%4==0&&a!=0) //判断输入的年份是不是闰年{b=b-1;c=c+1;d=(a-b)*365+b*366+c;}elsed=(a-b)*365+b*366+c+day;show(d); //输出星期几return 0;}int month_to_day(int c){switch(c){case 11:c=334;break;case 10:c=304;break;case 9:c=273;break;case 8:c=243;break;case 7:c=212;break;case 6:c=181;break;case 5:c=151;break;case 4:c=120;break;case 3:c=90;break;case 2:c=59;break;case 1:c=31;break;default:break;}return c;}void show(int d){switch(d%7){case 0:cout<<year<<"-"<<month<<"-"<<day<<"是星期日。
"<<endl;break;case 1:cout<<year<<"-"<<month<<"-"<<day<<"是星期一。
"<<endl;break;case 2:cout<<year<<"-"<<month<<"-"<<day<<"是星期二。
"<<endl;break;case 3:cout<<year<<"-"<<month<<"-"<<day<<"是星期三。
"<<endl;break;case 4:cout<<year<<"-"<<month<<"-"<<day<<"是星期四。
"<<endl;break;case 5:cout<<year<<"-"<<month<<"-"<<day<<"是星期五。
"<<endl;break;case 6:cout<<year<<"-"<<month<<"-"<<day<<"是星期六。
"<<endl;break;}}(2) 用递归法将一个整数转换成字符串输出。
#include<iostream>using namespace std;int main(){void convert(int n);int number;cout<<"input an integer:";cin>>number;cout<<"output:"<<endl;if(number<0){cout<<"-";number=-number;}convert(number);cout<<endl;return 0;}void convert(int n){int i;char c;if((i=n/10)!=0)convert(i);c=n%10+'0';cout<<" "<<c;}(3) 有一篇三行文字的文章,每行最多80个字符,编写函数,由实参传递字符串,分别统计文章中大写字母、小写字母、数字、空格及其它字符的个数。
#include "iostream.h"#include "string.h"void main(){char a[100],b[100],c[100];int l1,l2,l3,d=0,x=0,s=0,k=0,q=0,i;cout<<"请输入第一行文字"<<endl;gets(a);cout<<"请输入第二行文字"<<endl;gets(b);cout<<"请输入第三行文字"<<endl;gets(c);l1=strlen(a);l2=strlen(b);l3=strlen(c);for(i=0;i<l1;i++)//统计第一行{ if(a[i]>='a'&&a[i]<='z') x++;if(a[i]>='A'&&a[i]<='Z') d++;if(a[i]>='0'&&a[i]<='9') s++;if(a[i]==' ') k++;}for(i=0;i<l2;i++)//统计第二行{ if(b[i]>='a'&&b[i]<='z') x++;if(b[i]>='A'&&b[i]<='Z') d++;if(b[i]>='0'&&b[i]<='9') s++;if(b[i]==' ') k++;}for(i=0;i<l3;i++)//统计第三行{ if(c[i]>='a'&&c[i]<='z') x++;if(c[i]>='A'&&c[i]<='Z') d++;if(c[i]>='0'&&c[i]<='9') s++;if(c[i]==' ') k++;}q=l1+l2+l3-x-d-s-k;//其他字符cout<<"共有大写字母"<<d<<"个"<<"小写字母"<<x<<"个"<<"数字"<<s<<"个"<<"空格"<<k<<"个"<<"其他字符"<<q<<"个"<<endl;}分析:自定义函数需返回多个统计结果,可采用一个专门的数组存放统计结果,并将其作为函数参数,在被调函数中计数。