题目1:输入一个字符串,反相输出
//输入一个字符串 反序输出
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void inverted_order(char *c){
int length = 0;
int i =0;
char *output;
char *c_temp;
//可以通过自带的函数来求出字符串的长度,其长度不包含'\0',但是实际上占用length+1的空间
// length = strlen(c);
// printf("%d",length);
// return;
while(*c != '\0'){
c++;
length++;
}
//实际上每个字符串都是以'/0'结尾的,所以必须要加1
c_temp = (char *)malloc((sizeof(char))*(length+1));
output = c_temp;
for(;i<length;i++){
c--;
*c_temp = *c;
c_temp++;
}
*c_temp = '\0';
printf("%s",output);
return;
}
void main(){
char *str;
int length;
printf("请输入字符串的长度\n");
scanf("%d",&length);
str = (char *)malloc(sizeof(char)*length);
printf("please input a string:\n");
scanf("%s",str);
inverted_order(str);
}
题目2:华为的c语言试题
1. 识别字符串中的整数并转换为数字形式(40分) 问题描述: 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数。 要求实现函数: void take_num(const char *strIn, int *n, unsigned int *outArray) 【输入】 strIn: 输入的字符串 【输出】 n: 统计识别出来的整数个数 outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数, outArray[1]是第二个整数,以此类推。数组地址已经分配,可以直接使用 【返回】 无 注: I、 不考虑字符串中出现的正负号(+, -),即所有转换结果为非负整数(包括0和正整数) II、 不考虑转换后整数超出范围情况,即测试用例中可能出现的最大整数不会超过unsigned int可处理的范围 III、 需要考虑 '0' 开始的数字字符串情况,比如 "00035" ,应转换为整数35; "000" 应转换为整数0;"00.0035" 应转换为整数0和35(忽略小数点:mmm.nnn当成两个数mmm和nnn来识别) IV、 输入字符串不会超过100 Bytes,请不用考虑超长字符串的情况。 示例 输入:strIn = "ab00cd+123fght456-25 3.005fgh" 输出:n = 6 outArray = {0, 123, 456, 25, 3, 5}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
unsigned int get_int(char *c){
return (unsigned int)(*c-'0');
}
void take_num(const char *strln,int *n,unsigned int *outArray){
int length=0;
int i=0;
int j=-1;
//若flag连续,说明前一个也是数字
int flag =0;
char *c = strln;
// length = strlen(strln);
// length = strlen(c);
while(*c != '\0'){
c++;
length++;
}
c = strln;
for(;i<length;i++){
if('0' <= *c && *c<='9'){
if(flag == 0){
flag = 1;
j++;
outArray[j] = get_int(c);
}else{
outArray[j] = outArray[j]*10;
outArray[j] += get_int(c);
}
}else{
flag = 0;
}
c++;
}
*n = j+1;
}
void main(){
int n=0;
int i=0;
char strln[100];
int outArray[100];
scanf("%s",strln);
take_num(strln,&n,outArray);
printf("%s","整数的个数为:");
printf("%d\n",n);
for(;i<n;i++){
printf("%d\n",outArray[i]);
}
}