11.将两个两位数的正整数a,b合并形成一个整数放在c中,合并的方式如:当a=45,b=12时,调用该函数后,c=4152
void undergraduate_11(){
int temp[4],tempc = 0,a,b;
scanf("%d %d",&a,&b);
temp[0] = b%10;
temp[1] = a%10;
temp[2] = (b-temp[0]) / 10;
temp[3] = (a-temp[1]) / 10;
for(int i=0;i<4;i++)
{
for(int j=0;j<i;j++)
{
temp[i] *= 10;
}
tempc +=temp[i] ;
}
printf("%d",tempc);
}
12.初试矩阵加上转置矩阵
void undergraduate_12(){
int a[3][3]={ 1,1,1,2,2,2,3,3,3};
int b[3][3],c[3][3];
printf("初始矩阵为:\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%4d",a[i][j]);
b[j][i] = a[i][j];
}
printf("\n");
}
printf("转置矩阵为:\n");
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%4d",b[i][j]);
c[i][j] = a[i][j] + b[i][j];
}
printf("\n");
}
printf("\n\n初始 + 转置 矩阵为:\n");
for(i=0;i<3;i++)
{
for(int j=0;j<3;j++)
{
printf("%4d",c[i][j]);
}
printf("\n");
}
}
13.从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。如当s中的数为:7654321时,t中的数为7531
void undergraduate_13(){
long s,t=0,temp=0;
int yushu,mod=1,j=0;
scanf("%d",&s);
for(int i=0;;i++)
{
yushu = ((s-temp)/mod)%10;
if(yushu == 0) break;
temp += yushu * mod;
mod *=10;
if(i%2 == 0)
{
for(int k=0;k<i/2;k++)
{
yushu *= 10;
}
t += yushu;
}
}
printf("%d",t);
}
14.冒泡法选择法
15.将长整型数中每一位上为偶数的数依次取出,构成一个新数放在t中,高位仍在高位,低位仍在低位。如当s中的数为87653142时,t中的数为8642
void undergraduate_15(){
long s,t=0,temp=0;
int yushu,mod=1,j=0;
scanf("%d",&s);
for(int i=0;;i++)
{
yushu = ((s-temp)/mod)%10;
if(yushu == 0) break;
temp += yushu * mod;
mod *=10;
if(yushu%2 == 0)
{
j++;
for(int k=0;k<j-1;k++)
{
yushu *= 10;
}
t += yushu;
}
}
printf("%d",t);
}
16.计算正整数num各位数字之积
void undergraduate_16(){
long temp = 123456789;
int yushu = 0,mod = 1,sum=0,ji=1;
while((yushu=((temp-sum)/mod)%10) !=0)//求余数, 全部按照各位来处理。
{
sum += yushu * mod;
ji *= yushu;
mod *= 10;
}
printf("%d",ji);
}
17.当字符串中的内容为:“abcdabfabcdx”,t中的内容为:“ab”时,输出结果应是:abcdx
当字符串中的内容为:“abcdabfabcdx”,t中的内容为:“abd”时,则程序输出:not befound!
void fun(char *str,char *t1){
int j=0,k;
for(int i=strlen(str)-1;i>=0;i--)
{
if(str[i]==t1[strlen(t1)-1-j])
{
j++;
if(j == strlen(t1)) break;
continue;
}
j = 0;
}
if(j==0) printf("not be found");
else puts((str+i));
}
18.当s所指字符串的内容为:“abcdabfab”,t1所指子串中的内容为:“ab”,t2所指子串的内容为:“99”时,结果在w所指的数组中的内容应为:“99cd99f99”
void fun(char *str,char *t1,char *t2){
int len=strlen(t1);
int j=0;
for(int i=strlen(str)-1;i>=0;i--)
{
if(str[i] == t1[len-1-j])
{
j++;
if(j == len)//如果已经匹配了的话,那就替换
{
j=0;
for(int k=0;k<len;k++)
{
str[i+k] = t2[j++];
}
}
continue;
}
j=0;
}
puts(str);
}
19 求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共有M个字符串,且串长<N
#define M 5
#define N 20
int fun(char (*ss)[N],int *n){
int length[M],min_no;
*n = N;
for(int i=0;i<M;i++)
{
gets(ss[i]);
length[i] = strlen(ss[i]);
if(length[i] < *n)
{
*n = length[i];
min_no = i;
}
}
return min_no;
}
20.在字符串中的每个数字字符后都加一个*号
20.在字符串中的每个数字字符后都加一个*号
void fun(char *s,int len){
char temp;
int no=0,j=1;
for(int i=0;i<len;i++){
if(s[i] > '0' - 1 && s[i] < '9' + 1 )
{
no ++;
}
} //no是数字的个数
no = len + no;//最后数组的长度。
s[no] = '\0';
for(i=no-1;i>=0;i--){
if(s[len-j] >'0'-1 && s[len-j] < '9' + 1 ){//如果是数字字符
s[i--] = '*';
}
s[i] = s[len-j];
j++;
}
puts(s);
}