2017/11/29C语言作业

1、如输入:Z2009-AShanghaiZ
   则输出:lenth = 8;
   事例说明:从A到Z的子串为SHanghai,其长度是8.
#include <stdio.h>
#include <string.h>
int func(char arr[],int lenth)
{
int i=0,j=0,len=0;
for(i=0;i<lenth;i++)
{
if(arr[i]=='A')
{
for(j=i;arr[j]!='Z';j++)
{
len++;
}
}
}
return len-1;
}
int main(void)
{
int lenth=0,temp=0;
char arr[100];
printf("请输入字符串:\n");
scanf("%s",arr);
lenth=strlen(arr);
temp=func(arr,lenth);
printf("%d\n",temp);
return 0; 
}
2、下面是某语言的计算字符串Hash值的算法如下,如果字符‘a’、‘b’对应的ascii的值对应十进制是97、98,
请回答控制台打印出的数值是多少___
typedef unsigned long uintptr_t;
uintptr_t NXStrHash (const void *data)
{
uintptr_t hash = 0;
unsigned char *s = (unsigned char *)data;
if (s)for (; ; )
{
if (*s == '\0')break;
hash ^= (uintptr_t)*s++;
printf("1---%ld.\n", hash);
   
if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<8;
printf("2---%ld.\n", hash);

if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<16;
printf("3---%ld.\n", hash);

if (*s == '\0')break;
hash ^= (uintptr_t)*s++<<24;
printf("4---%ld.\n", hash);
}
return hash;
};
int main(void)
{
uintptr_t hash_value = NXStrHash("ab");
printf("%ld.\n", hash_value);
return 0;
}
3、实现整数n(n<=10)的算式:n!+(n-1)!+(n-2)!...+3!+2!+1!
   输入 n = 3:结果 3!+2!+1! = 11
   函数原型:int jiecheng_sum(int n)
   
   #include<stdio.h>
void jiecheng_sum(int n)
{
int i=0,sum=0;
for(n;n>=1;n--)
{
int temp=1;
for(i=1;i<=n;i++)
{
temp*=i;
}
sum+=temp;
}
printf("sum=%d\n",sum);
return;


int main(void)
{
int n=0;
printf("please input number:\n");
scanf("%d",&n);
jiecheng_sum(n);
return 0;

}
表达式的构造
问题描述:
给出三个正整数a,b,c,你可以在它们中间插入加号或者乘号以及括号将其变成表达式。比如给出数字1,2,3,你可以构造出:1+2*3=7 1*(2+3)=5 1*2*3=6 (1+2)*3=9等表达式。
#include <stdio.h>
int sum(int a,int b,int c)
{
int i=0,sum=0;
int arr[6];
arr[0]=a+b+c;
arr[1]=a*b*c;
arr[2]=a+b*c;
arr[3]=a*b+c;
arr[4]=(a+b)*c;
arr[5]=a*(b+c);
for(i=0;i<6;i++)
{
if(arr[i]>sum)
sum=arr[i];
}
return sum;
}
int main(void)
{
int a,b,c,d;
printf("请输入三个正整数\n");
scanf("%d%d%d",&a,&b,&c);
d=sum(a,b,c);
printf("值最大表达式数值:%d\n",d);
return 0;
}
一个数组有N个元素,使用冒泡排序对其进行排序输出。
#include <stdio.h>
void maopao(int arr[],int lenth)
{
int i=0,j=0;
for(i=0;i<lenth-1;i++)
{
for(j=0;j<lenth-1-i;j++)
{
int temp=0;
if(arr[j]>arr[j+1])
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}

}
}
void bianli(int arr[],int lenth)
{
int i=0;
for(i=0;i<lenth;i++)
{
printf(" %d",arr[i]);
}
printf("\n");
}
int main(void)
{
int lenth=0,i=0;
printf("请输入你要进行排序的数组长度:");
scanf("%d",&lenth);
int arr[lenth];
printf("请输入你要排序的数组:"); 
for(i=0;i<lenth;i++)
{
scanf("%d",&arr[i]);
}
bianli(arr,lenth);
printf("----------排序后----------\n");
maopao(arr,lenth);
bianli(arr,lenth);
return 0;
}   


回文判断
#include <stdio.h>
#include <string.h>
int fun(char arr[],int lenth)
{
int i=0; 
for(i=0;i<(lenth/2);i++)
{
if(arr[i]!=arr[lenth-1-i])
{
printf("该数不是回文数。\n");
return 0;
}
}
printf("该数是回文数。\n");
return 1;

}
int main(void)
{   char arr[100];
int lenth;
printf("请输入你要进行判断的字符串:\n");
scanf("%s",&arr);
lenth=strlen(arr);
fun(arr,lenth);
return 0;
}   
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值