C语言编写函数change(chara,intp),将字符串s中的数字字符转换程数字存储到整型数组p中,函数返回转换后的数字个数并在main函数中运行
时间: 2024-02-25 15:54:12 浏览: 108
好的,我来为您编写该函数:
```c
#include <stdio.h>
int change(char s[], int p[]) {
int i, j, count = 0;
for (i = 0, j = 0; s[i] != '\0'; i++) {
if (s[i] >= '0' && s[i] <= '9') {
p[j++] = s[i] - '0';
count++;
}
}
return count;
}
int main() {
char s[] = "a1b2c3d4e5f6";
int p[6], i, count;
count = change(s, p);
printf("转换后的数字个数:%d\n", count);
printf("转换后的数字:");
for (i = 0; i < count; i++) {
printf("%d ", p[i]);
}
printf("\n");
return 0;
}
```
该函数的实现思路是遍历字符串s中的每个字符,如果是数字字符则将其转换为数字并存储到整型数组p中,并计数。最后返回转换后的数字个数。
在main函数中,我们定义一个字符串s和一个整型数组p,调用change函数将s中的数字字符转换为数字并存储到p中,同时输出转换后的数字个数和数字数组p。
相关问题
2.实现字符串“反转”\n\n(1)传入一个字符数组void funa(char a[]\n\n(2) “反转”字符串,比如_ 字符串是\"abcdefg\"; 那么反转之后为“gfedcba\"\n\n通过chara
[]数组的下标操作,可以实现字符串的反转。具体实现方法是:从字符串的两端开始,依次交换对应位置的字符,直到中间位置。代码实现如下:
void funa(char a[]) {
int len = strlen(a);
for (int i = ; i < len / 2; i++) {
char temp = a[i];
a[i] = a[len - i - 1];
a[len - i - 1] = temp;
}
}
其中,strlen()函数用于获取字符串的长度,len / 2表示需要交换的次数,temp变量用于存储交换时的临时值。
本关任务:编写一个输出学生和教师数据的程序,学生数据有编号、姓名、年龄、班号和成绩;教师数据有编号、姓名、年龄、职称和部门。要求声明一个person类,并作为学生数据操作类student和教师数据操作类teacher的基类。 (1)定义Person类 int number1,age; //编号、年龄 char name[10];//姓名 Person() ://默认构造函数 Person(int i,int j,const char*p) : //带参构造函数 void disp()://数据输出 (2)定义Student类 int lesson; //班号 char grade; //成绩 Student(int i,int j,const char*p, int k,char a) : //构造函数 void disp(): //数据输出 (3)定义Teacher类 char job[10],workplace[30]; // 职称、部门 Teacher(int i,int j,charp,const chara,const char*b) ://构造函数 void disp() ://数据输出
好的,根据您的要求,以下是一个简单的程序示例,以C++语言为例:
```c++
#include <iostream>
#include <string.h>
using namespace std;
class Person { // Person类为基类,包含编号、姓名、年龄等属性
public:
int number1;
int age;
char name[10];
Person() {} // 默认构造函数
Person(int i, int j, const char *p) { // 带参构造函数
number1 = i;
age = j;
strcpy(name, p);
}
virtual void disp() { // 数据输出
cout << "编号:" << number1 << endl;
cout << "姓名:" << name << endl;
cout << "年龄:" << age << endl;
}
};
class Student : public Person { // Student类继承自Person类,增加班号和成绩属性
public:
int lesson;
char grade;
Student(int i, int j, const char *p, int k, char a) : Person(i, j, p) { // 构造函数
lesson = k;
grade = a;
}
virtual void disp() { // 数据输出
cout << "学生信息:" << endl;
Person::disp();
cout << "班号:" << lesson << endl;
cout << "成绩:" << grade << endl;
}
};
class Teacher : public Person { // Teacher类继承自Person类,增加职称和部门属性
public:
char job[10];
char workplace[30];
Teacher(int i, int j, const char *p, const char *a, const char *b) : Person(i, j, p) { // 构造函数
strcpy(job, a);
strcpy(workplace, b);
}
virtual void disp() { // 数据输出
cout << "教师信息:" << endl;
Person::disp();
cout << "职称:" << job << endl;
cout << "部门:" << workplace << endl;
}
};
int main() {
Person *p[3];
p[0] = new Student(1, 18, "张三", 1, 'A');
p[1] = new Teacher(1001, 35, "李老师", "教授", "计算机科学与技术");
p[2] = new Student(2, 19, "李四", 2, 'B');
for (int i = 0; i < 3; i++) {
p[i]->disp();
cout << endl;
}
return 0;
}
```
这个程序定义了一个Person类,作为学生数据操作类Student和教师数据操作类Teacher的基类。其中,Student类和Teacher类都继承自Person类,并增加了各自特有的属性。在主函数中,我们创建了三个指向Person类对象的指针,分别指向一个Student对象、一个Teacher对象和另一个Student对象。通过指针调用disp()方法输出各自的属性信息。
需要注意的是,我们在Person类中将disp()方法声明为虚函数,这是因为在多态的情况下,通过指向基类对象的指针调用虚函数可以实现动态绑定,从而调用正确的派生类中的函数。
希望这个程序可以帮助您完成本关任务。如果您有任何问题,欢迎随时问我。
阅读全文